package org.eclipse.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(); } }