blob: 85978e2eeac630796816e77bb6e41db4310c7465 [file] [log] [blame]
package org.eclipse.update.internal.ui;
import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.update.internal.ui.model.*;
import org.eclipse.update.internal.ui.wizards.*;
import org.eclipse.update.internal.ui.UpdateUI;
/**
* @author Wassim Melhem
*/
public class WebBookmarksDialog extends Dialog {
class ModelListener implements IUpdateModelChangedListener {
public void objectChanged(Object object, String property) {
viewer.refresh();
}
public void objectsAdded(Object parent, Object[] children) {
viewer.refresh();
}
public void objectsRemoved(Object parent, Object[] children) {
viewer.refresh();
}
}
class ContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
UpdateModel model = UpdateUI.getDefault().getUpdateModel();
Object[] bookmarks = model.getBookmarkLeafs();
Object[] sitesToVisit = discoveryFolder.getChildren(discoveryFolder);
Object[] all = new Object[bookmarks.length + sitesToVisit.length];
System.arraycopy(bookmarks, 0, all, 0, bookmarks.length);
System.arraycopy(sitesToVisit, 0, all, bookmarks.length, sitesToVisit.length);
return all;
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
public void dispose() {
}
}
class WebSiteLabelProvider extends LabelProvider {
public Image getImage(Object element) {
UpdateLabelProvider provider = UpdateUI.getDefault().getLabelProvider();
if (element instanceof BookmarkFolder)
return provider.get(UpdateUIImages.DESC_BFOLDER_OBJ,0);
if (element instanceof SiteBookmark)
return provider.get(UpdateUIImages.DESC_WEB_SITE_OBJ,0);
return null;
}
public String getText(Object element) {
return super.getText(element);
}
}
private Button addButton;
private Button editButton;
private Button removeButton;
private ModelListener modelListener;
private TableViewer viewer;
private DiscoveryFolder discoveryFolder = new DiscoveryFolder();
public WebBookmarksDialog(Shell parentShell) {
super(parentShell);
UpdateUI.getDefault().getLabelProvider().connect(this);
modelListener = new ModelListener();
UpdateUI.getDefault().getUpdateModel().addUpdateModelChangedListener(
modelListener);
}
protected Control createDialogArea(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
layout.marginWidth = 10;
container.setLayout(layout);
container.setLayoutData(new GridData(GridData.FILL_BOTH));
Label label = new Label(container, SWT.NONE);
label.setText(UpdateUI.getString("WebBookmarksDialog.label")); //$NON-NLS-1$
GridData gd = new GridData();
gd.horizontalSpan = 2;
label.setLayoutData(gd);
Table table = new Table(container, SWT.BORDER | SWT.V_SCROLL);
table.setLayoutData(new GridData(GridData.FILL_BOTH));
viewer = new TableViewer(table);
viewer.setContentProvider(new ContentProvider());
viewer.setLabelProvider(new WebSiteLabelProvider());
viewer.setInput(UpdateUI.getDefault().getUpdateModel());
viewer.addFilter(new ViewerFilter() {
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof SiteBookmark)
return ((SiteBookmark)element).isWebBookmark();
return true;
}
});
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent e) {
IStructuredSelection ssel =
(IStructuredSelection) e.getSelection();
if (ssel.size() == 0)
return;
SiteBookmark bookmark = (SiteBookmark)ssel.getFirstElement();
Object parent = bookmark.getParent(bookmark);
editButton.setEnabled(parent == null || !parent.equals(discoveryFolder));
removeButton.setEnabled(parent == null || !parent.equals(discoveryFolder));
}
});
createButtons(container);
Dialog.applyDialogFont(container);
return container;
}
private void createButtons(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new GridLayout());
container.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
addButton = new Button(container, SWT.PUSH);
addButton.setText(UpdateUI.getString("WebBookmarksDialog.add")); //$NON-NLS-1$
addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
addButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
NewWebSiteDialog dialog = new NewWebSiteDialog(getShell());
dialog.create();
dialog.getShell().setText(UpdateUI.getString("WebBookmarksDialog.new")); //$NON-NLS-1$
dialog.open();
}
});
editButton = new Button(container, SWT.PUSH);
editButton.setText(UpdateUI.getString("WebBookmarksDialog.edit")); //$NON-NLS-1$
editButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
editButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
IStructuredSelection ssel =
(IStructuredSelection) viewer.getSelection();
SiteBookmark bookmark = (SiteBookmark) ssel.getFirstElement();
EditSiteDialog dialog = new EditSiteDialog(getShell(), bookmark);
dialog.create();
dialog.getShell().setText(UpdateUI.getString("WebBookmarksDialog.editTitle")); //$NON-NLS-1$
dialog.open();
}
});
editButton.setEnabled(false);
removeButton = new Button(container, SWT.PUSH);
removeButton.setText(UpdateUI.getString("WebBookmarksDialog.remove")); //$NON-NLS-1$
removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
removeButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
IStructuredSelection ssel =
(IStructuredSelection) viewer.getSelection();
SiteBookmark bookmark = (SiteBookmark) ssel.getFirstElement();
UpdateUI.getDefault().getUpdateModel().removeBookmark(bookmark);
}
});
removeButton.setEnabled(false);
}
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
createButton(
parent,
IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL,
false);
}
protected void okPressed() {
super.okPressed();
UpdateUI.getDefault().getLabelProvider().disconnect(this);
UpdateUI.getDefault().getUpdateModel().removeUpdateModelChangedListener(
modelListener);
}
protected void cancelPressed() {
UpdateUI.getDefault().getUpdateModel().reset();
UpdateUI.getDefault().getLabelProvider().disconnect(this);
UpdateUI.getDefault().getUpdateModel().removeUpdateModelChangedListener(
modelListener);
super.cancelPressed();
}
}