/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.nebula.widgets.xviewer.customize.dialog;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.nebula.widgets.xviewer.Activator;
import org.eclipse.nebula.widgets.xviewer.XViewer;
import org.eclipse.nebula.widgets.xviewer.XViewerColumnLabelProvider;
import org.eclipse.nebula.widgets.xviewer.XViewerColumnSorter;
import org.eclipse.nebula.widgets.xviewer.XViewerText;
import org.eclipse.nebula.widgets.xviewer.core.model.ColumnData;
import org.eclipse.nebula.widgets.xviewer.core.model.ColumnFilterData;
import org.eclipse.nebula.widgets.xviewer.core.model.CustomizeData;
import org.eclipse.nebula.widgets.xviewer.core.model.SortingData;
import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
import org.eclipse.nebula.widgets.xviewer.core.util.CollectionsUtil;
import org.eclipse.nebula.widgets.xviewer.customize.CustomizeDataLabelProvider;
import org.eclipse.nebula.widgets.xviewer.customize.CustomizeManager;
import org.eclipse.nebula.widgets.xviewer.util.XViewerException;
import org.eclipse.nebula.widgets.xviewer.util.internal.ArrayTreeContentProvider;
import org.eclipse.nebula.widgets.xviewer.util.internal.XViewerFilteredTree;
import org.eclipse.nebula.widgets.xviewer.util.internal.XViewerLib;
import org.eclipse.nebula.widgets.xviewer.util.internal.XViewerLog;
import org.eclipse.nebula.widgets.xviewer.util.internal.dialog.DialogWithEntry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
/**
* Provides dialog for table customization
*
* @author Donald G. Dunne
*/
public class XViewerCustomizeDialog extends MessageDialog {
private static String buttons[] =
new String[] {XViewerText.get("button.ok"), XViewerText.get("button.apply"), XViewerText.get("button.cancel")}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
private final XViewer xViewerToCustomize;
private XViewerFilteredTree custTable;
protected XViewerFilteredTree hiddenColTable;
protected XViewerFilteredTree visibleColTable;
private Text sorterText;
private Text filterText;
private Button filterRegExCheckBox;
private Text columnFilterText;
// Select Customization Buttons
Button setDefaultButton, deleteButton;
// Config Customization Buttons - Moving items
Button addItemButton, addAllItemButton, removeItemButton, removeAllItemButton, moveUpButton, moveDownButton;
// Config Customization Buttons
Button saveButton, renameButton;
private final static String SET_AS_DEFAULT = XViewerText.get("button.set_default"); //$NON-NLS-1$
private final static String REMOVE_DEFAULT = XViewerText.get("button.remove_default"); //$NON-NLS-1$
private String title = XViewerText.get("XViewerCustomizeDialog.title"); //$NON-NLS-1$
boolean isFeedbackAfter = false;
boolean isShowSorterBlock = true;
boolean isShowFilterTextBlock = true;
boolean isShowColumnFilterTextBlock = true;
public XViewerCustomizeDialog(XViewer xViewer) {
this(xViewer, Display.getCurrent().getActiveShell());
}
private XViewerCustomizeDialog(XViewer xViewer, Shell parentShell) {
super(parentShell, "", null, "", MessageDialog.NONE, buttons, 0); //$NON-NLS-1$ //$NON-NLS-2$
this.xViewerToCustomize = xViewer;
setShellStyle(getShellStyle() | SWT.RESIZE);
}
public void setTitle(String title) {
this.title = title;
}
DragSourceAdapter hiddenTableDragListener = new DragSourceAdapter() {
@Override
public void dragStart(DragSourceEvent event) {
if (hiddenColTable.getViewer().getSelection().isEmpty()) {
event.doit = false;
}
}
/*
* @see org.eclipse.swt.dnd.DragSourceAdapter#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
*/
@Override
public void dragSetData(DragSourceEvent event) {
if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
List<XViewerColumn> selCols = getHiddenTableSelection();
Collection<String> ids = new ArrayList<String>(selCols.size());
for (XViewerColumn xCol : selCols) {
ids.add(xCol.getId());
}
event.data = CollectionsUtil.toString(ids, null, ", ", null); //$NON-NLS-1$
}
}
};
DropTargetAdapter hiddenTableDropListener = new DropTargetAdapter() {
@Override
public void dragOperationChanged(DropTargetEvent event) {
// do nothing
}
@Override
public void drop(DropTargetEvent event) {
if (event.data instanceof String) {
performHiddenTableTextDrop(event);
}
}
@Override
public void dragOver(DropTargetEvent event) {
performHiddenTableDragOver(event);
}
@Override
public void dropAccept(DropTargetEvent event) {
// do nothing
}
};
/**
* Drag should only be from visible table
*/
public void performHiddenTableDragOver(DropTargetEvent event) {
if (!TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
event.detail = DND.DROP_NONE;
return;
}
// Only allow drag from visibleColTable
if (event.widget != visibleColTable) {
return;
}
event.detail = DND.DROP_MOVE;
}
@SuppressWarnings("unchecked")
public void performHiddenTableTextDrop(DropTargetEvent event) {
String droppedIds = (String) event.data;
List<XViewerColumn> droppedVisibleTableXCols = new ArrayList<XViewerColumn>();
List<XViewerColumn> orderCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
for (XViewerColumn xCol : orderCols) {
if (droppedIds.contains(xCol.getId())) {
droppedVisibleTableXCols.add(xCol);
}
}
moveFromVisibleToHidden(droppedVisibleTableXCols);
}
DragSourceAdapter visibleTableDragListener = new DragSourceAdapter() {
@Override
public void dragStart(DragSourceEvent event) {
if (visibleColTable.getViewer().getSelection().isEmpty()) {
event.doit = false;
}
}
/*
* @see org.eclipse.swt.dnd.DragSourceAdapter#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
*/
@Override
public void dragSetData(DragSourceEvent event) {
if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
List<XViewerColumn> selCols = getVisibleTableSelection();
Collection<String> ids = new ArrayList<String>(selCols.size());
for (XViewerColumn xCol : selCols) {
ids.add(xCol.getId());
}
event.data = CollectionsUtil.toString(ids, null, ", ", null); //$NON-NLS-1$
}
}
};
DropTargetAdapter visibleTableDropListener = new DropTargetAdapter() {
@Override
public void dragOperationChanged(DropTargetEvent event) {
// do nothing
}
@Override
public void drop(DropTargetEvent event) {
if (event.data instanceof String) {
performVisibleTableTextDrop(event);
}
}
@Override
public void dragOver(DropTargetEvent event) {
performVisibleTableDragOver(event);
}
@Override
public void dropAccept(DropTargetEvent event) {
// do nothing
}
};
@SuppressWarnings("unchecked")
public void performVisibleTableTextDrop(DropTargetEvent event) {
Tree tree = visibleColTable.getViewer().getTree();
TreeItem dragOverTreeItem = tree.getItem(visibleColTable.getViewer().getTree().toControl(event.x, event.y));
String droppedIds = (String) event.data;
// Determine dragOverXCol, if any
XViewerColumn dragOverXCol = null;
if (dragOverTreeItem != null) {
dragOverXCol = (XViewerColumn) dragOverTreeItem.getData();
// Don't allow dropping on same item as dragging
if (droppedIds.contains(dragOverXCol.getId())) {
return;
}
}
List<XViewerColumn> droppedXCols = new ArrayList<XViewerColumn>();
List<XViewerColumn> orderCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
for (XViewerColumn xCol : orderCols) {
if (droppedIds.contains(xCol.getId())) {
droppedXCols.add(xCol);
}
}
for (XViewerColumn xCol : (List<XViewerColumn>) hiddenColTable.getViewer().getInput()) {
if (droppedIds.contains(xCol.getId())) {
droppedXCols.add(xCol);
}
}
orderCols.removeAll(droppedXCols);
int dropXColOrderColsIndex = 0;
for (XViewerColumn xCol : (List<XViewerColumn>) visibleColTable.getViewer().getInput()) {
if (dragOverXCol != null && xCol.getId().equals(dragOverXCol.getId())) {
break;
}
dropXColOrderColsIndex++;
}
if (isFeedbackAfter) {
orderCols.addAll(dropXColOrderColsIndex + 1, droppedXCols);
} else {
orderCols.addAll(dropXColOrderColsIndex, droppedXCols);
}
visibleColTable.getViewer().setInput(orderCols);
List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getViewer().getInput();
hiddenCols.removeAll(droppedXCols);
hiddenColTable.getViewer().setInput(hiddenCols);
}
public void performVisibleTableDragOver(DropTargetEvent event) {
if (!TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
event.detail = DND.DROP_NONE;
return;
}
Tree tree = visibleColTable.getViewer().getTree();
TreeItem dragOverTreeItem = tree.getItem(visibleColTable.getViewer().getTree().toControl(event.x, event.y));
if (dragOverTreeItem == null) {
return;
}
event.feedback = DND.FEEDBACK_EXPAND;
event.detail = DND.DROP_NONE;
IStructuredSelection selectedItem = (IStructuredSelection) visibleColTable.getViewer().getSelection();
if (selectedItem == null || selectedItem.isEmpty()) {
selectedItem = (IStructuredSelection) hiddenColTable.getViewer().getSelection();
}
if (selectedItem == null) {
return;
}
Object obj = selectedItem.getFirstElement();
if (obj instanceof XViewerColumn) {
if (isFeedbackAfter) {
event.feedback = DND.FEEDBACK_INSERT_AFTER;
} else {
event.feedback = DND.FEEDBACK_INSERT_BEFORE;
}
event.detail = DND.DROP_MOVE;
}
}
@Override
protected Control createDialogArea(Composite parent) {
if (getShell() != null) {
getShell().setText(title);
}
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Composite comp = new Composite(parent, SWT.NONE);
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
gd.heightHint = 700;
comp.setLayoutData(gd);
GridLayout gridLayout_2 = new GridLayout();
gridLayout_2.numColumns = 2;
comp.setLayout(gridLayout_2);
Label namespaceLabel = new Label(comp, SWT.NONE);
GridData gridData = new GridData(SWT.CENTER, SWT.CENTER, false, false);
gridData.horizontalSpan = 2;
namespaceLabel.setLayoutData(gridData);
namespaceLabel.setText(MessageFormat.format(XViewerText.get("namespace"), //$NON-NLS-1$
xViewerToCustomize.getXViewerFactory().getNamespace()));
createSelectCustomizationSection(comp);
// Column Configuration
Group configureColumnsGroup = new Group(comp, SWT.NONE);
configureColumnsGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 3));
configureColumnsGroup.setText(XViewerText.get("XViewerCustomizeDialog.text")); //$NON-NLS-1$
GridLayout gridLayout = new GridLayout();
gridLayout.marginWidth = 3;
gridLayout.marginHeight = 3;
gridLayout.numColumns = 3;
configureColumnsGroup.setLayout(gridLayout);
createHiddenButtonsComposition(configureColumnsGroup);
createMoveButtons(configureColumnsGroup);
createVisibleButtonsComposition(configureColumnsGroup);
gridLayout.numColumns = 3;
gridLayout.numColumns = 3;
// Create Sorter and Filter Blocks
final Composite composite_2 = new Composite(configureColumnsGroup, SWT.NONE);
composite_2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
final GridLayout gridLayout_3 = new GridLayout();
gridLayout_3.numColumns = 3;
composite_2.setLayout(gridLayout_3);
if (isShowSorterBlock) {
createSorterTextBlock(composite_2);
}
if (isShowFilterTextBlock) {
createFilterTextBlock(composite_2);
}
if (isShowColumnFilterTextBlock) {
createColumnFilterTextBlock(composite_2);
}
createConfigCustomizationButtonBar(composite_2);
try {
loadCustomizeTable();
} catch (Exception ex) {
XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
}
updateButtonEnablements();
return comp;
}
private void createSelectCustomizationSection(Composite comp) {
// Customization Table and Buttons
final Composite custComp = new Composite(comp, SWT.NONE);
final GridData gd_composite_6 = new GridData(SWT.FILL, SWT.FILL, true, true);
custComp.setLayoutData(gd_composite_6);
final GridLayout gridLayout_1 = new GridLayout();
gridLayout_1.marginWidth = 0;
gridLayout_1.marginHeight = 0;
custComp.setLayout(gridLayout_1);
Label selectCustomizationLabel = new Label(custComp, SWT.NONE);
selectCustomizationLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
selectCustomizationLabel.setText(XViewerText.get("XViewerCustomizeDialog.prompt")); //$NON-NLS-1$
// Customization Table
custTable = new XViewerFilteredTree(custComp, SWT.BORDER);
final Tree table_2 = custTable.getViewer().getTree();
final GridData gd_table_2 = new GridData(SWT.FILL, SWT.FILL, true, true);
gd_table_2.heightHint = 270;
gd_table_2.widthHint = 200;
table_2.setLayoutData(gd_table_2);
custTable.getViewer().setLabelProvider(new CustomizeDataLabelProvider(xViewerToCustomize));
custTable.getViewer().setContentProvider(new ArrayTreeContentProvider());
custTable.getViewer().setSorter(new ViewerSorter() {
@SuppressWarnings("unchecked")
@Override
public int compare(Viewer viewer, Object e1, Object e2) {
if (((CustomizeData) e1).getName().startsWith("-")) { //$NON-NLS-1$
return -1;
} else if (((CustomizeData) e2).getName().startsWith("-")) { //$NON-NLS-1$
return 1;
} else {
return getComparator().compare(((CustomizeData) e1).getName(), ((CustomizeData) e2).getName());
}
}
});
custTable.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
handleCustTableSelectionChanged();
updateButtonEnablements();
storeCustTableSelection();
}
});
// Customization Table Buttons
final Composite composite = new Composite(custComp, SWT.NONE);
composite.setLayoutData(new GridData());
final GridLayout gridLayout_7 = new GridLayout();
gridLayout_7.numColumns = 4;
composite.setLayout(gridLayout_7);
setDefaultButton = new Button(composite, SWT.NONE);
setDefaultButton.setLayoutData(new GridData());
setDefaultButton.setText(SET_AS_DEFAULT);
setDefaultButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleSetDefaultButton();
updateButtonEnablements();
}
});
deleteButton = new Button(composite, SWT.NONE);
deleteButton.setLayoutData(new GridData());
deleteButton.setText(XViewerText.get("button.delete")); //$NON-NLS-1$
deleteButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleDeleteButton();
updateButtonEnablements();
}
});
}
private void createConfigCustomizationButtonBar(final Composite composite) {
// Button block
final Composite composite_1 = new Composite(composite, SWT.NONE);
composite_1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
final GridLayout gridLayout_10 = new GridLayout();
gridLayout_10.numColumns = 5;
composite_1.setLayout(gridLayout_10);
// Customization Buttons
renameButton = new Button(composite_1, SWT.NONE);
renameButton.setText(XViewerText.get("button.rename")); //$NON-NLS-1$
renameButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleRenameButton();
}
});
saveButton = new Button(composite_1, SWT.NONE);
saveButton.setText(XViewerText.get("button.save")); //$NON-NLS-1$
saveButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleSaveButton();
}
});
}
private void createColumnFilterTextBlock(final Composite composite) {
// Filter text block
final Composite composite_8 = new Composite(composite, SWT.NONE);
composite_8.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
final GridLayout gridLayout_14 = new GridLayout();
gridLayout_14.numColumns = 3;
composite_8.setLayout(gridLayout_14);
final Label columnFilterLabel = new Label(composite_8, SWT.NONE);
columnFilterLabel.setText(XViewerText.get("XViewerCustomizeDialog.filter.column")); //$NON-NLS-1$
columnFilterText = new Text(composite_8, SWT.BORDER);
columnFilterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final Label clearColumnFilterLabel = new Label(composite_8, SWT.PUSH);
clearColumnFilterLabel.setImage(XViewerLib.getImage("clear.gif")); //$NON-NLS-1$
clearColumnFilterLabel.addMouseListener(new MouseListener() {
@Override
public void mouseDown(MouseEvent e) {
// do nothing
}
@Override
public void mouseDoubleClick(MouseEvent e) {
// do nothing
}
@Override
public void mouseUp(MouseEvent e) {
columnFilterText.setText(""); //$NON-NLS-1$
}
});
}
private void createFilterTextBlock(final Composite composite) {
// Filter text block
final Composite composite_7 = new Composite(composite, SWT.NONE);
composite_7.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
final GridLayout gridLayout_13 = new GridLayout();
gridLayout_13.numColumns = 5;
composite_7.setLayout(gridLayout_13);
final Label filterLabel = new Label(composite_7, SWT.NONE);
filterLabel.setText(XViewerText.get("XViewerCustomizeDialog.filter.text")); //$NON-NLS-1$
filterText = new Text(composite_7, SWT.BORDER);
filterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
Label filterLabel2 = new Label(composite_7, SWT.NONE);
filterLabel2.setText(XViewerText.get("XViewerCustomizeDialog.filter.expression")); //$NON-NLS-1$
filterRegExCheckBox = new Button(composite_7, SWT.CHECK);
filterRegExCheckBox.setLayoutData(new GridData(SWT.RIGHT, SWT.NONE, false, false));
final Label clearFilterLabel = new Label(composite_7, SWT.PUSH);
clearFilterLabel.setImage(XViewerLib.getImage("clear.gif")); //$NON-NLS-1$
clearFilterLabel.addMouseListener(new MouseListener() {
@Override
public void mouseDown(MouseEvent e) {
// do nothing
}
@Override
public void mouseDoubleClick(MouseEvent e) {
// do nothing
}
@Override
public void mouseUp(MouseEvent e) {
filterText.setText(""); //$NON-NLS-1$
}
});
}
private void createSorterTextBlock(final Composite composite) {
final Label sorterLabel = new Label(composite, SWT.NONE);
sorterLabel.setText(XViewerText.get("XViewerCustomizeDialog.sorter")); //$NON-NLS-1$
sorterText = new Text(composite, SWT.BORDER);
sorterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final Label clearSorterLabel = new Label(composite, SWT.PUSH);
clearSorterLabel.setImage(XViewerLib.getImage("clear.gif")); //$NON-NLS-1$
clearSorterLabel.addMouseListener(new MouseListener() {
@Override
public void mouseDown(MouseEvent e) {
// do nothing
}
@Override
public void mouseDoubleClick(MouseEvent e) {
// do nothing
}
@Override
public void mouseUp(MouseEvent e) {
sorterText.setText(""); //$NON-NLS-1$
}
});
}
private void createVisibleButtonsComposition(Composite parent) {
final Composite visibleTableComp = new Composite(parent, SWT.NONE);
visibleTableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
final GridLayout gridLayout_6 = new GridLayout();
gridLayout_6.marginWidth = 0;
gridLayout_6.marginHeight = 0;
visibleTableComp.setLayout(gridLayout_6);
final Label visibleColumnsLabel = new Label(visibleTableComp, SWT.NONE);
visibleColumnsLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
visibleColumnsLabel.setText(XViewerText.get("heading.visible")); //$NON-NLS-1$
// Visible Column Table
visibleColTable = new XViewerFilteredTree(visibleTableComp);
final Tree table = visibleColTable.getViewer().getTree();
final GridData gd_table = new GridData(SWT.FILL, SWT.FILL, true, true);
gd_table.widthHint = 300;
table.setLayoutData(gd_table);
visibleColTable.getViewer().setLabelProvider(new XViewerColumnLabelProvider());
visibleColTable.getViewer().setContentProvider(new ArrayTreeContentProvider());
visibleColTable.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
updateButtonEnablements();
}
});
visibleColTable.getViewer().addDragSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
visibleTableDragListener);
visibleColTable.getViewer().addDropSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
visibleTableDropListener);
hiddenColTable.getViewer().addDragSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
hiddenTableDragListener);
hiddenColTable.getViewer().addDropSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
hiddenTableDropListener);
}
private void createHiddenButtonsComposition(Composite parent) {
Composite hiddenTableComp = new Composite(parent, SWT.NONE);
hiddenTableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
GridLayout gridLayout_4 = new GridLayout();
gridLayout_4.marginWidth = 0;
gridLayout_4.marginHeight = 0;
hiddenTableComp.setLayout(gridLayout_4);
Label hiddenColumnsLabel = new Label(hiddenTableComp, SWT.NONE);
hiddenColumnsLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
hiddenColumnsLabel.setText(XViewerText.get("heading.hidden")); //$NON-NLS-1$
// Hidden Column Table
hiddenColTable = new XViewerFilteredTree(hiddenTableComp);
Tree table_1 = hiddenColTable.getViewer().getTree();
GridData gd_table_1 = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2);
gd_table_1.widthHint = 300;
table_1.setLayoutData(gd_table_1);
hiddenColTable.getViewer().setLabelProvider(new XViewerColumnLabelProvider());
hiddenColTable.getViewer().setContentProvider(new ArrayTreeContentProvider());
hiddenColTable.getViewer().setSorter(new XViewerColumnSorter());
hiddenColTable.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
updateButtonEnablements();
}
});
}
private void createMoveButtons(Composite parent) {
Composite moveButtonComp = new Composite(parent, SWT.NONE);
moveButtonComp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
GridLayout gridLayout_5 = new GridLayout();
gridLayout_5.marginWidth = 0;
gridLayout_5.marginHeight = 0;
moveButtonComp.setLayout(gridLayout_5);
addItemButton = new Button(moveButtonComp, SWT.NONE);
addItemButton.setText(">"); //$NON-NLS-1$
addItemButton.setToolTipText(XViewerText.get("button.add.tip")); //$NON-NLS-1$
addItemButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
addItemButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleAddItemButton();
}
});
addAllItemButton = new Button(moveButtonComp, SWT.NONE);
addAllItemButton.setText(">>"); //$NON-NLS-1$
addAllItemButton.setToolTipText(XViewerText.get("button.add_all.tip")); //$NON-NLS-1$
addAllItemButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleAddAllItemButton();
}
});
removeItemButton = new Button(moveButtonComp, SWT.NONE);
removeItemButton.setText("<"); //$NON-NLS-1$
removeItemButton.setToolTipText(XViewerText.get("button.remove.tip")); //$NON-NLS-1$
removeItemButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
removeItemButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleRemoveItemButton();
}
});
removeAllItemButton = new Button(moveButtonComp, SWT.NONE);
removeAllItemButton.setText("<<"); //$NON-NLS-1$
removeAllItemButton.setToolTipText(XViewerText.get("button.remove_all.tip")); //$NON-NLS-1$
removeAllItemButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleRemoveAllItemButton();
}
});
moveUpButton = new Button(moveButtonComp, SWT.NONE);
moveUpButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
moveUpButton.setText("^"); //$NON-NLS-1$
moveUpButton.setToolTipText(XViewerText.get("button.move_up.tip")); //$NON-NLS-1$
moveUpButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleMoveUpButton();
}
});
moveDownButton = new Button(moveButtonComp, SWT.NONE);
moveDownButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
moveDownButton.setText("v"); //$NON-NLS-1$
moveDownButton.setToolTipText(XViewerText.get("button.move_down.tip")); //$NON-NLS-1$
moveDownButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
handleMoveDownButton();
}
});
}
@SuppressWarnings("unchecked")
private void handleAddItemButton() {
// Remove from hidden
List<XViewerColumn> hiddenSelCols = getHiddenTableSelection();
if (hiddenSelCols == null) {
return;
}
List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getViewer().getInput();
hiddenCols.removeAll(hiddenSelCols);
hiddenColTable.getViewer().setInput(hiddenCols);
// Add to visible
List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
visibleCols.addAll(hiddenSelCols);
visibleColTable.getViewer().setInput(visibleCols);
}
private void handleRemoveItemButton() {
List<XViewerColumn> visibleSelCols = getVisibleTableSelection();
if (visibleSelCols != null && visibleSelCols.size() != 0) {
moveFromVisibleToHidden(visibleSelCols);
}
}
@SuppressWarnings("unchecked")
protected void moveFromVisibleToHidden(List<XViewerColumn> visibleSelCols) {
// Remove from visible
if (visibleSelCols == null || visibleSelCols.isEmpty()) {
return;
}
List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
visibleCols.removeAll(visibleSelCols);
visibleColTable.getViewer().setInput(visibleCols);
// Add to hidden
List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getViewer().getInput();
hiddenCols.addAll(visibleSelCols);
hiddenColTable.getViewer().setInput(hiddenCols);
updateSortTextField();
updateColumnFilterField();
}
@SuppressWarnings("unchecked")
private void updateSortTextField() {
if (sorterText == null) {
return;
}
// get visible column ids
List<String> visibleColumnIds = new ArrayList<String>();
for (XViewerColumn xCol : (List<XViewerColumn>) visibleColTable.getViewer().getInput()) {
visibleColumnIds.add(xCol.getId());
}
// get current sortIds
SortingData sortingData = new SortingData(sorterText.getText());
List<String> currentSortIds = sortingData.getSortingIds();
// get complement to determine ids that are sorted but not visible == invalid
for (String invalidId : CollectionsUtil.setComplement(currentSortIds, visibleColumnIds)) {
sortingData.removeSortingName(invalidId);
}
if (sorterText != null && !sorterText.isDisposed()) {
sorterText.setText(sortingData.getXml());
}
}
@SuppressWarnings("unchecked")
private void updateColumnFilterField() {
if (columnFilterText == null) {
return;
}
// get visible column ids
List<String> visibleColumnIds = new ArrayList<String>();
for (XViewerColumn xCol : (List<XViewerColumn>) visibleColTable.getViewer().getInput()) {
visibleColumnIds.add(xCol.getId());
}
// get current columnFilterIds
ColumnFilterData columnFilterData = new ColumnFilterData();
columnFilterData.setFromXml(columnFilterText.getText());
Set<String> currentSortIds = columnFilterData.getColIds();
// get complement to determine ids that are sorted but not visible == invalid
for (String invalidId : CollectionsUtil.setComplement(currentSortIds, visibleColumnIds)) {
columnFilterData.removeFilterText(invalidId);
}
if (columnFilterText != null && !columnFilterText.isDisposed()) {
columnFilterText.setText(columnFilterData.getXml());
}
}
@SuppressWarnings("unchecked")
private void handleAddAllItemButton() {
List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getViewer().getInput();
List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
visibleCols.addAll(hiddenCols);
visibleColTable.getViewer().setInput(visibleCols);
hiddenCols.clear();
hiddenColTable.getViewer().setInput(hiddenCols);
updateSortTextField();
updateColumnFilterField();
}
/**
* for testing purposes
*/
protected void handleAddAllItem() {
handleAddAllItemButton();
}
@SuppressWarnings("unchecked")
private void handleRemoveAllItemButton() {
List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getViewer().getInput();
hiddenCols.addAll(visibleCols);
hiddenColTable.getViewer().setInput(hiddenCols);
// Add to visible
visibleCols.clear();
visibleColTable.getViewer().setInput(visibleCols);
updateSortTextField();
updateColumnFilterField();
}
@SuppressWarnings("unchecked")
private void handleMoveUpButton() {
List<XViewerColumn> selCols = getVisibleTableSelection();
if (selCols == null) {
return;
}
List<XViewerColumn> orderCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
int index = orderCols.indexOf(selCols.iterator().next());
if (index > 0) {
orderCols.removeAll(selCols);
orderCols.addAll(index - 1, selCols);
visibleColTable.getViewer().setInput(orderCols);
} else {
return;
}
ArrayList<XViewerColumn> selected = new ArrayList<XViewerColumn>();
selected.addAll(selCols);
visibleColTable.getViewer().setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
visibleColTable.getViewer().getTree().setFocus();
updateButtonEnablements();
}
@SuppressWarnings("unchecked")
private void handleMoveDownButton() {
List<XViewerColumn> selCols = getVisibleTableSelection();
if (selCols == null) {
return;
}
List<XViewerColumn> orderCols = (List<XViewerColumn>) visibleColTable.getViewer().getInput();
int index = orderCols.indexOf(selCols.iterator().next());
if (index < (orderCols.size() - selCols.size())) {
orderCols.removeAll(selCols);
orderCols.addAll(index + 1, selCols);
visibleColTable.getViewer().setInput(orderCols);
} else {
return;
}
ArrayList<XViewerColumn> selected = new ArrayList<XViewerColumn>();
selected.addAll(selCols);
visibleColTable.getViewer().setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
visibleColTable.getViewer().getTree().setFocus();
updateButtonEnablements();
}
/**
* @return xColumns from hidden and visible customization lists
*/
private List<XViewerColumn> getConfigCustXViewerColumns() {
List<XViewerColumn> xCols = new ArrayList<XViewerColumn>();
List<XViewerColumn> currColumns = xViewerToCustomize.getCustomizeMgr().getCurrentTableColumns();
for (XViewerColumn xCol : getTableXViewerColumns(visibleColTable.getViewer())) {
xCol.setShow(true);
xCol.setXViewer(xViewerToCustomize);
for (XViewerColumn currColumn : currColumns) {
if (currColumn.getId().equals(xCol.getId())) {
if (!currColumn.isSortForward()) {
xCol.setSortForward(false);
}
}
}
xCols.add(xCol);
}
for (XViewerColumn xCol : getTableXViewerColumns(hiddenColTable.getViewer())) {
xCol.setShow(false);
xCol.setXViewer(xViewerToCustomize);
xCols.add(xCol);
}
return xCols;
}
private void handleSaveButton() {
try {
List<CustomizeData> custDatas = new ArrayList<CustomizeData>();
for (CustomizeData custData : xViewerToCustomize.getCustomizeMgr().getSavedCustDatas()) {
if (custData.isPersonal()) {
custDatas.add(custData);
} else if (xViewerToCustomize.getXViewerFactory().isAdmin()) {
custDatas.add(custData);
}
}
CustomizationDataSelectionDialog diag = new CustomizationDataSelectionDialog(xViewerToCustomize, custDatas);
if (diag.open() == 0) {
String name = diag.getEnteredName();
try {
CustomizeData diagSelectedCustomizeData = diag.getSelectedCustData();
String diagEnteredNewName = diag.getEnteredName();
CustomizeData custData = getConfigCustomizeCustData();
if (diagEnteredNewName != null) {
custData.setName(name);
// Set currently selected to newly saved custData
selectedCustTableCustData = custData;
} else {
custData.setName(diagSelectedCustomizeData.getName());
custData.setGuid(diagSelectedCustomizeData.getGuid());
}
custData.setPersonal(!diag.isSaveShared());
xViewerToCustomize.getCustomizeMgr().saveCustomization(custData);
} catch (Exception ex) {
XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
}
}
loadCustomizeTable();
} catch (Exception ex) {
XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
}
}
private void handleRenameButton() {
XViewerColumn xCol = getVisibleTableSelection().iterator().next();
DialogWithEntry ed = new DialogWithEntry(Display.getCurrent().getActiveShell(), XViewerText.get("button.rename"), //$NON-NLS-1$
null, XViewerText.get("XViewerCustomizeDialog.rename.new"), //$NON-NLS-1$
MessageDialog.QUESTION,
new String[] {
XViewerText.get("button.ok"), //$NON-NLS-1$
XViewerText.get("XViewerCustomizeDialog.rename.default"), //$NON-NLS-1$
XViewerText.get("button.cancel")}, //$NON-NLS-1$
0);
int result = ed.open();
if (result == 2) {
return;
}
if (result == 0) {
xViewerToCustomize.getCustomizeMgr().customizeColumnName(xCol, ed.getEntry());
} else if (result == 1) {
xViewerToCustomize.getCustomizeMgr().customizeColumnName(xCol, ""); //$NON-NLS-1$
}
visibleColTable.getViewer().update(xCol, null);
}
/**
* @return CustomizeData represented by the configuration area
*/
private CustomizeData getConfigCustomizeCustData() {
CustomizeData custData = new CustomizeData();
custData.resetGuid();
custData.setNameSpace(xViewerToCustomize.getXViewerFactory().getNamespace());
custData.getColumnData().setColumns(getConfigCustXViewerColumns());
if (sorterText != null) {
custData.getSortingData().setFromXml(sorterText.getText());
}
if (filterText != null && filterRegExCheckBox != null) {
custData.getFilterData().setFilterText(filterText.getText(), filterRegExCheckBox.getSelection());
}
if (columnFilterText != null) {
custData.getColumnFilterData().setFromXml(columnFilterText.getText());
}
CustomizeData custTableSelection = getCustTableSelection();
if (custData.getColumnData().getColumns().equals(custTableSelection.getColumnData().getColumns())) {
custData.setName(custTableSelection.getName());
} else {
custData.setName("Unsaved Custom");
}
return custData;
}
private void handleLoadConfigCustButton() {
xViewerToCustomize.getCustomizeMgr().loadCustomization(getConfigCustomizeCustData());
xViewerToCustomize.refreshColumnsWithPreCompute();
}
/**
* for testing purposes
*/
protected void handleLoadConfigCust() {
handleLoadConfigCustButton();
}
private void handleSetDefaultButton() {
try {
CustomizeData custData = getCustTableSelection();
if (custData.getName().equals(CustomizeManager.TABLE_DEFAULT_LABEL) || custData.getName().equals(
CustomizeManager.CURRENT_LABEL)) {
XViewerLib.popup(XViewerText.get("error"), XViewerText.get("error.set_default")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
if (xViewerToCustomize.getCustomizeMgr().isCustomizationUserDefault(custData)) {
if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(),
XViewerText.get("button.remove_default"), //$NON-NLS-1$
MessageFormat.format(XViewerText.get("XViewerCustomizeDialog.prompt.remove_default"), //$NON-NLS-1$
custData.getName()))) {
xViewerToCustomize.getCustomizeMgr().setUserDefaultCustData(custData, false);
}
} else if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(),
XViewerText.get("button.set_default"), //$NON-NLS-1$
MessageFormat.format(XViewerText.get("XViewerCustomizeDialog.prompt.set_default"), custData.getName()))) { //$NON-NLS-1$
xViewerToCustomize.getCustomizeMgr().setUserDefaultCustData(custData, true);
}
loadCustomizeTable();
} catch (Exception ex) {
XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
}
}
private void handleDeleteButton() {
try {
CustomizeData custSel = getCustTableSelection();
if (custSel.getName().equals(CustomizeManager.TABLE_DEFAULT_LABEL) || custSel.getName().equals(
CustomizeManager.CURRENT_LABEL)) {
XViewerLib.popup(XViewerText.get("error"), XViewerText.get("error.delete_default")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
if (!custSel.isPersonal() && !xViewerToCustomize.getXViewerFactory().isAdmin()) {
XViewerLib.popup(XViewerText.get("error"), XViewerText.get("error.delete_global")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
String dialogTitle = XViewerText.get("XViewerCustomizeDialog.prompt.delete.title"); //$NON-NLS-1$
String dialogMessage = XViewerText.get("XViewerCustomizeDialog.prompt.delete"); //$NON-NLS-1$
if (!custSel.isPersonal()) {
dialogTitle = XViewerText.get("XViewerCustomizeDialog.prompt.delete.shared.title"); //$NON-NLS-1$
dialogMessage = XViewerText.get("XViewerCustomizeDialog.prompt.delete.shared"); //$NON-NLS-1$
}
if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), dialogTitle,
MessageFormat.format(dialogMessage, custSel.getName()))) {
xViewerToCustomize.getCustomizeMgr().deleteCustomization(custSel);
loadCustomizeTable();
updateButtonEnablements();
}
} catch (Exception ex) {
XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
}
}
private void updateButtonEnablements() {
CustomizeData custData = getCustTableSelection();
setDefaultButton.setEnabled(
xViewerToCustomize.getXViewerFactory().getXViewerCustomizations().isCustomizationPersistAvailable() && custTable.getViewer().getTree().isFocusControl() && custData != null && !custData.getName().equals(
CustomizeManager.TABLE_DEFAULT_LABEL) && !custData.getName().equals(CustomizeManager.CURRENT_LABEL));
if (custTable.getViewer().getTree().isFocusControl() && custData != null) {
try {
setDefaultButton.setText(xViewerToCustomize.getCustomizeMgr().isCustomizationUserDefault(
custData) ? REMOVE_DEFAULT : SET_AS_DEFAULT);
} catch (XViewerException ex) {
XViewerLog.log(Activator.class, Level.SEVERE, ex);
}
setDefaultButton.getParent().layout();
}
deleteButton.setEnabled(
xViewerToCustomize.getXViewerFactory().getXViewerCustomizations().isCustomizationPersistAvailable() && custTable.getViewer().getTree().isFocusControl() && custData != null);
addItemButton.setEnabled(
hiddenColTable.getViewer().getTree().isFocusControl() && getHiddenTableSelection() != null);
removeItemButton.setEnabled(
visibleColTable.getViewer().getTree().isFocusControl() && getVisibleTableSelection() != null);
renameButton.setEnabled(
visibleColTable.getViewer().getTree().isFocusControl() && getVisibleTableSelection() != null && getVisibleTableSelection().size() == 1);
moveDownButton.setEnabled(
visibleColTable.getViewer().getTree().isFocusControl() && getVisibleTableSelection() != null);
moveUpButton.setEnabled(
visibleColTable.getViewer().getTree().isFocusControl() && getVisibleTableSelection() != null);
saveButton.setEnabled(
xViewerToCustomize.getXViewerFactory().getXViewerCustomizations() != null && xViewerToCustomize.getXViewerFactory().getXViewerCustomizations().isCustomizationPersistAvailable());
}
private void loadCustomizeTable() throws Exception {
// Add stored customization data
List<CustomizeData> custDatas = xViewerToCustomize.getCustomizeMgr().getSavedCustDatas();
// Add table default customization data
CustomizeData defaultTableCustData = xViewerToCustomize.getCustomizeMgr().getTableDefaultCustData();
defaultTableCustData.setName(CustomizeManager.TABLE_DEFAULT_LABEL);
custDatas.add(defaultTableCustData);
// Add current customization data generated from actual table
CustomizeData currentCustData = xViewerToCustomize.getCustomizeMgr().generateCustDataFromTable();
currentCustData.setName(CustomizeManager.CURRENT_LABEL);
custDatas.add(currentCustData);
custTable.getViewer().setInput(custDatas);
restoreCustTableSelection();
// If selection not restored, select default
if (getCustTableSelection() == null) {
ArrayList<Object> sel = new ArrayList<Object>();
sel.add(currentCustData);
custTable.getViewer().setSelection(new StructuredSelection(sel.toArray(new Object[sel.size()])));
custTable.getViewer().getTree().setFocus();
}
updateSortTextField();
updateColumnFilterField();
updateButtonEnablements();
}
private CustomizeData getCustTableSelection() {
IStructuredSelection selection = (IStructuredSelection) custTable.getViewer().getSelection();
if (selection.isEmpty()) {
return null;
}
Iterator<?> i = selection.iterator();
return (CustomizeData) i.next();
}
protected List<XViewerColumn> getVisibleTableSelection() {
return getTableSelection(visibleColTable.getViewer());
}
protected List<XViewerColumn> getHiddenTableSelection() {
return getTableSelection(hiddenColTable.getViewer());
}
private List<XViewerColumn> getTableSelection(TreeViewer xColTableViewer) {
List<XViewerColumn> xCols = new ArrayList<XViewerColumn>();
IStructuredSelection selection = (IStructuredSelection) xColTableViewer.getSelection();
if (selection.isEmpty()) {
return null;
}
Iterator<?> i = selection.iterator();
while (i.hasNext()) {
xCols.add((XViewerColumn) i.next());
}
return xCols;
}
@SuppressWarnings("unchecked")
private List<XViewerColumn> getTableXViewerColumns(TreeViewer xColTableViewer) {
return (List<XViewerColumn>) xColTableViewer.getInput();
}
private void handleCustTableSelectionChanged() {
if (getCustTableSelection() == null) {
return;
}
CustomizeData custData = getCustTableSelection();
if (custData == null) {
XViewerLog.logAndPopup(Activator.class, Level.SEVERE, new IllegalStateException("Can't obtain selection Xml")); //$NON-NLS-1$
return;
}
List<XViewerColumn> hideXCols = new ArrayList<XViewerColumn>();
List<XViewerColumn> showXCols = new ArrayList<XViewerColumn>();
for (XViewerColumn xCol : custData.getColumnData().getColumns()) {
if (xCol.isShow()) {
showXCols.add(xCol);
} else {
hideXCols.add(xCol);
}
}
hiddenColTable.getViewer().setInput(hideXCols);
visibleColTable.getViewer().setInput(showXCols);
if (sorterText != null) {
sorterText.setText(custData.getSortingData().getXml());
sorterText.setData(custData);
}
if (filterText != null && filterRegExCheckBox != null) {
filterText.setText(custData.getFilterData().getFilterText());
filterText.setData(custData);
filterRegExCheckBox.setSelection(custData.getFilterData().isRegularExpression());
}
if (columnFilterText != null) {
columnFilterText.setText(custData.getColumnFilterData().getXml());
columnFilterText.setData(custData);
}
updateSortTextField();
updateColumnFilterField();
}
private CustomizeData selectedCustTableCustData = null;
public void storeCustTableSelection() {
// Store selected so can re-select after event re-draw
if (getCustTableSelection() != null) {
selectedCustTableCustData = getCustTableSelection();
}
// System.out.println("Selection " + selectedCustTableCustData.getName() + " - " + selectedCustTableCustData.getGuid());
}
public void restoreCustTableSelection() {
if (selectedCustTableCustData != null) {
ArrayList<Object> selected = new ArrayList<Object>();
selected.add(selectedCustTableCustData);
custTable.getViewer().setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
// System.out.println("Restoring " + selectedCustTableCustData.getName() + " - " + selectedCustTableCustData.getGuid());
}
}
@Override
protected void buttonPressed(int buttonId) {
// Ok
if (buttonId == 0) {
handleLoadConfigCustButton();
close();
}
// Apply
else if (buttonId == 1) {
handleLoadConfigCustButton();
}
// Cancel
else {
close();
}
}
public String getTitle() {
return title;
}
public void setShowSorterBlock(boolean isShowSorterBlock) {
this.isShowSorterBlock = isShowSorterBlock;
}
public void setShowFilterTextBlock(boolean isShowFilterTextBlock) {
this.isShowFilterTextBlock = isShowFilterTextBlock;
}
public void setShowColumnFilterTextBlock(boolean isShowColumnFilterTextBlock) {
this.isShowColumnFilterTextBlock = isShowColumnFilterTextBlock;
}
}