intial source from http://www.sf.net/projects/wdte
[phpeclipse.git] / net.sourceforge.phpeclipse.webbrowser / src / net / sourceforge / phpeclipse / webbrowser / internal / OrganizeFavoritesDialog.java
diff --git a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/internal/OrganizeFavoritesDialog.java b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/internal/OrganizeFavoritesDialog.java
new file mode 100644 (file)
index 0000000..5623946
--- /dev/null
@@ -0,0 +1,211 @@
+package net.sourceforge.phpeclipse.webbrowser.internal;
+/**********************************************************************
+ * Copyright (c) 2003 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ *    IBM - Initial API and implementation
+ **********************************************************************/
+import java.util.List;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Item;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+/**
+ * Dialog to manage the favorites list.
+ */
+public class OrganizeFavoritesDialog extends Dialog {
+       protected List favorites = WebBrowserPreference.getInternalWebBrowserFavorites();
+       
+       public class FavoriteContentProvider implements IStructuredContentProvider {
+               public FavoriteContentProvider() {
+                       super();
+               }
+
+               public void dispose() { }
+
+               public Object[] getElements(Object inputElement) {
+                       return favorites.toArray();
+               }
+
+               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
+       }
+       
+       public class FavoriteLabelProvider implements ITableLabelProvider {
+               public FavoriteLabelProvider() {
+                       super();
+               }
+
+               public void addListener(ILabelProviderListener listener) { }
+
+               public void dispose() { }
+
+               public Image getColumnImage(Object element, int columnIndex) {
+                       if (columnIndex == 0)
+                               return ImageResource.getImage(ImageResource.IMG_FAVORITE);
+                       return null;
+               }
+
+               public String getColumnText(Object element, int columnIndex) {
+                       Favorite favorite = (Favorite) element;
+                       if (columnIndex == 0)
+                               return favorite.getName();
+                       else
+                               return favorite.getURL();
+               }
+
+               public boolean isLabelProperty(Object element, String property) {
+                       return false;
+               }
+
+               public void removeListener(ILabelProviderListener listener) { }
+       }
+
+       /**
+        * ManageFavoritesDialog constructor comment.
+        * @param parentShell org.eclipse.swt.widgets.Shell
+        * @
+        */
+       public OrganizeFavoritesDialog(Shell parentShell) {
+               super(parentShell);
+
+               setBlockOnOpen(true);
+       }
+
+       /**
+        *
+        */
+       protected void configureShell(Shell newShell) {
+               super.configureShell(newShell);
+               newShell.setText(WebBrowserUIPlugin.getResource("%dialogOrganizeFavoritesTitle"));
+       }
+
+       /**
+        * 
+        */
+       protected Control createDialogArea(Composite parent) {
+               Composite composite = new Composite(parent, SWT.NONE);
+               GridLayout layout = new GridLayout();
+               layout.numColumns = 2;
+               layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
+               layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+               layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+               layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+               composite.setLayout(layout);
+               composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+               composite.setFont(parent.getFont());
+               //WorkbenchHelp.setHelp(composite, ContextIds.TERMINATE_SERVER_DIALOG);
+       
+               Label label = new Label(composite, SWT.NONE);
+               label.setText(WebBrowserUIPlugin.getResource("%dialogOrganizeFavoritesMessage"));
+               GridData data = new GridData();
+               data.horizontalSpan = 2;
+               label.setLayoutData(data);
+               
+               final Table table = new Table(composite, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE);
+               data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
+               data.widthHint = 300;
+               data.heightHint = 150;
+               table.setLayoutData(data);
+               table.setLinesVisible(true);
+               
+               TableLayout tableLayout = new TableLayout();
+               table.setLayout(tableLayout);
+               table.setHeaderVisible(true);
+               
+               tableLayout.addColumnData(new ColumnWeightData(5, 50, true));
+               TableColumn col = new TableColumn(table, SWT.NONE);
+               col.setText(WebBrowserUIPlugin.getResource("%dialogOrganizeFavoritesName"));
+               
+               tableLayout.addColumnData(new ColumnWeightData(6, 60, true));
+               col = new TableColumn(table, SWT.NONE);
+               col.setText(WebBrowserUIPlugin.getResource("%dialogOrganizeFavoritesURL"));
+               table.setLayout(tableLayout);
+               
+               final TableViewer tableViewer = new TableViewer(table);         
+               tableViewer.setContentProvider(new FavoriteContentProvider());
+               tableViewer.setLabelProvider(new FavoriteLabelProvider());
+               tableViewer.setInput("root");
+               tableViewer.setColumnProperties(new String[] {"name", "url"});
+               
+               tableViewer.setCellEditors(new CellEditor[] {new TextCellEditor(table), new TextCellEditor(table)});
+               
+               ICellModifier cellModifier = new ICellModifier() {
+                       public Object getValue(Object element, String property) {
+                               Favorite f = (Favorite) element;
+                               if ("name".equals(property))
+                                       return f.getName();
+                               else
+                                       return f.getURL();
+                       }
+       
+                       public boolean canModify(Object element, String property) {
+                               return true;
+                       }
+       
+                       public void modify(Object element, String property, Object value) {
+                               if (element instanceof Item)
+                                       element = ((Item) element).getData();
+
+                               try {
+                                       Favorite f = (Favorite) element;
+                                       String s = (String) value;
+                                       if ("name".equals(property))
+                                               f.setName(s);
+                                       else
+                                               f.setURL(s);
+                                       tableViewer.refresh(f);
+                               } catch (Exception ex) {
+                                       ex.printStackTrace();
+                               }
+                       }
+               };
+               tableViewer.setCellModifier(cellModifier);
+               
+               final Button remove = SWTUtil.createButton(composite, WebBrowserUIPlugin.getResource("%remove"));
+               remove.setEnabled(false);
+               
+               tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+                       public void selectionChanged(SelectionChangedEvent event) {
+                               remove.setEnabled(!event.getSelection().isEmpty());
+                       }
+               });
+               
+               remove.addSelectionListener(new SelectionAdapter() {
+                       public void widgetSelected(SelectionEvent e) {
+                               int index = table.getSelectionIndex();
+                               if (index < 0 || index >= favorites.size())
+                                       return;
+                               
+                               tableViewer.remove(favorites.get(index));
+                               favorites.remove(index);
+                       }
+               });
+               
+               Dialog.applyDialogFont(composite);
+       
+               return composite;
+       }
+
+       protected void okPressed() {
+               WebBrowserPreference.setInternalWebBrowserFavorites(favorites);
+               super.okPressed();
+       }
+}
\ No newline at end of file