blob: 0e8a2f1b742b8ff970c2dc362f24463acd50801b [file] [log] [blame]
package org.eclipse.wst.server.ui.internal.publish;
/**********************************************************************
* 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 org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.wst.server.ui.internal.ContextIds;
import org.eclipse.wst.server.ui.internal.ServerUIPlugin;
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.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.help.WorkbenchHelp;
/**
* Dialog to modify the filter used in the publish viewer
* of the visual publisher.
*/
public class PublishViewerFilterDialog extends Dialog {
protected PublishViewerFilter filter;
protected CheckboxTableViewer viewer;
protected static final String[] filterStrings = new String[] {
ServerUIPlugin.getResource("%wizPublishFilterUnpublished"),
ServerUIPlugin.getResource("%wizPublishFilterNew"),
ServerUIPlugin.getResource("%wizPublishFilterUnmodified"),
ServerUIPlugin.getResource("%wizPublishFilterModified"),
ServerUIPlugin.getResource("%wizPublishFilterDeleted")};
protected static final String[] filterDescriptions = new String[] {
ServerUIPlugin.getResource("%wizPublishFilterUnpublishedDescription"),
ServerUIPlugin.getResource("%wizPublishFilterNewDescription"),
ServerUIPlugin.getResource("%wizPublishFilterUnmodifiedDescription"),
ServerUIPlugin.getResource("%wizPublishFilterModifiedDescription"),
ServerUIPlugin.getResource("%wizPublishFilterDeletedDescription")};
public class FilterLabelProvider implements ITableLabelProvider {
public void addListener(ILabelProviderListener listener) { }
public void dispose() { }
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
return filterStrings[((Integer) element).intValue()];
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) { }
}
public class FilterContentProvider implements IStructuredContentProvider {
public void dispose() { }
public Object[] getElements(Object element) {
return new Integer[] {
new Integer(0), new Integer(1), new Integer(2),
new Integer(3), new Integer(4)};
}
public void inputChanged(Viewer newViewer, Object oldInput, Object newInput) { }
}
/**
* PublishViewerFilterDialog constructor comment.
* @param parentShell org.eclipse.swt.widgets.Shell
*/
public PublishViewerFilterDialog(Shell parentShell, PublishViewerFilter filter) {
super(parentShell);
this.filter = filter;
}
/**
*
*/
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(ServerUIPlugin.getResource("%wizPublishFilterTitle"));
}
/**
* Creates and returns the contents of the upper part
* of this dialog (above the button bar).
* <p>
* The <code>Dialog</code> implementation of this framework method
* creates and returns a new <code>Composite</code> with
* standard margins and spacing. Subclasses should override.
* </p>
*
* @param the parent composite to contain the dialog area
* @return the dialog area control
*/
protected Control createDialogArea(Composite parent) {
// create a composite with standard margins and spacing
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
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.PUBLISHER_DIALOG_FILTER_DIALOG);
Label label = new Label(composite, SWT.NONE);
label.setText(ServerUIPlugin.getResource("%wizPublishFilterMessage"));
viewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
viewer.setContentProvider(new FilterContentProvider());
viewer.setLabelProvider(new FilterLabelProvider());
viewer.setInput("root");
WorkbenchHelp.setHelp(viewer.getTable(), ContextIds.PUBLISHER_DIALOG_FILTER_DIALOG);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = 200;
data.heightHint = 90;
viewer.getTable().setLayoutData(data);
if (filter.isFilteringUnpublishable())
viewer.setChecked(new Integer(0), true);
if (filter.isFilteringNew())
viewer.setChecked(new Integer(1), true);
if (filter.isFilteringUnmodified())
viewer.setChecked(new Integer(2), true);
if (filter.isFilteringModified())
viewer.setChecked(new Integer(3), true);
if (filter.isFilteringDeleted())
viewer.setChecked(new Integer(4), true);
final Label description = new Label(composite, SWT.WRAP);
description.setText(" \n ");
data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
data.heightHint = 35;
description.setLayoutData(data);
viewer.getTable().addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
try {
TableItem item = viewer.getTable().getSelection()[0];
Integer in = (Integer) item.getData();
description.setText(filterDescriptions[in.intValue()]);
} catch (Exception e) {
description.setText("");
}
}
public void widgetDefaultSelected(SelectionEvent event) {
}
});
Dialog.applyDialogFont(composite);
return composite;
}
/**
* Return the filter.
*
* @return org.eclipse.wst.server.ui.internal.publish.PublishViewerFilter
*/
public PublishViewerFilter getFilter() {
return filter;
}
protected void okPressed() {
filter.setFilteringUnpublishable(viewer.getChecked(new Integer(0)));
filter.setFilteringNew(viewer.getChecked(new Integer(1)));
filter.setFilteringUnmodified(viewer.getChecked(new Integer(2)));
filter.setFilteringModified(viewer.getChecked(new Integer(3)));
filter.setFilteringDeleted(viewer.getChecked(new Integer(4)));
super.okPressed();
}
}