]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/adapters/RemoveInstancesDialog.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / adapters / RemoveInstancesDialog.java
index f1e4936511cbbd7ad099cae5dbc7ab1ab3c022c3..a7d6135ba2d6ca7a646664ac33359f8477875c6d 100644 (file)
-package org.simantics.modeling.adapters;\r
-\r
-import org.eclipse.jface.dialogs.IDialogConstants;\r
-import org.eclipse.jface.dialogs.MessageDialog;\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.layout.GridLayoutFactory;\r
-import org.eclipse.jface.layout.TableColumnLayout;\r
-import org.eclipse.jface.resource.ImageDescriptor;\r
-import org.eclipse.jface.resource.JFaceResources;\r
-import org.eclipse.jface.resource.LocalResourceManager;\r
-import org.eclipse.jface.viewers.ColumnLabelProvider;\r
-import org.eclipse.jface.viewers.ColumnWeightData;\r
-import org.eclipse.jface.viewers.ISelectionChangedListener;\r
-import org.eclipse.jface.viewers.IStructuredContentProvider;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.jface.viewers.SelectionChangedEvent;\r
-import org.eclipse.jface.viewers.TableViewer;\r
-import org.eclipse.jface.viewers.TableViewerColumn;\r
-import org.eclipse.jface.viewers.Viewer;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.dnd.Clipboard;\r
-import org.eclipse.swt.dnd.TextTransfer;\r
-import org.eclipse.swt.dnd.Transfer;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.graphics.Color;\r
-import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Control;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.swt.widgets.Text;\r
-import org.simantics.utils.strings.EString;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- */\r
-public class RemoveInstancesDialog extends MessageDialog {\r
-\r
-       public static class Content {\r
-               public String label;\r
-               public ImageDescriptor image;\r
-               public String details;\r
-\r
-               public Content(String label) {\r
-                       assert label != null;\r
-                       this.label = label;\r
-               }\r
-\r
-               @Override\r
-               public String toString() {\r
-                       if (details == null)\r
-                               return label;\r
-                       return label + "\nDetails: " + details;\r
-               }\r
-       }\r
-\r
-       protected String message;\r
-       protected boolean hasDetails; \r
-\r
-       protected Content[] content;\r
-\r
-       protected LocalResourceManager resourceManager;\r
-       protected Composite tableAndButtons;\r
-       protected Text messageText;\r
-       protected Text detailsText;\r
-       private GridData detailsGridData;\r
-\r
-       public RemoveInstancesDialog(Shell parentShell, String dialogTitle, String dialogMessage, Content[] content) {\r
-               this(parentShell,\r
-                               dialogTitle,\r
-                               dialogMessage,\r
-                               MessageDialog.QUESTION,\r
-                               new String[] {\r
-                                       IDialogConstants.PROCEED_LABEL,\r
-                                       IDialogConstants.CANCEL_LABEL\r
-                               },\r
-                               1,\r
-                               content);\r
-       }\r
-\r
-       public RemoveInstancesDialog(Shell parentShell, String dialogTitle, String dialogMessage, int dialogType, String[] buttons, int defaultIndex, Content[] content) {\r
-               super(parentShell,\r
-                               dialogTitle,\r
-                               null,\r
-                               null,\r
-                               dialogType,\r
-                               buttons,\r
-                               defaultIndex);\r
-\r
-               this.message = dialogMessage;\r
-               this.content = content;\r
-               this.hasDetails = contentHasDetails(content);\r
-       }\r
-\r
-       private boolean contentHasDetails(Content[] content) {\r
-               for (Content c : content) {\r
-                       if (c.details != null && !c.details.trim().isEmpty())\r
-                               return true;\r
-               }\r
-               return false;\r
-       }\r
-\r
-       @Override\r
-       protected int getShellStyle() {\r
-               return super.getShellStyle() | SWT.RESIZE;\r
-       }\r
-\r
-       @Override\r
-       protected Control createDialogArea(Composite parent) {\r
-               resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent);\r
-               Composite composite = (Composite) super.createDialogArea(parent);\r
-               return composite;\r
-       }\r
-\r
-       @Override\r
-       protected Control createMessageArea(Composite composite) {\r
-               super.createMessageArea(composite);\r
-               // create message\r
-               if (message != null) {\r
-                       messageText = new Text(composite, getMessageLabelStyle());\r
-                       messageText.setText(message);\r
-                       messageText.setEditable(false);\r
-                       GridDataFactory\r
-                                       .fillDefaults()\r
-                                       .align(SWT.FILL, SWT.BEGINNING)\r
-                                       .grab(true, false)\r
-                                       .hint(\r
-                                                       convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH),\r
-                                                       SWT.DEFAULT).applyTo(messageText);\r
-               }\r
-               return composite;\r
-       }\r
-\r
-       @Override\r
-       protected Control createCustomArea(Composite parent) {\r
-               tableAndButtons = new Composite(parent, 0);\r
-               GridDataFactory.fillDefaults().grab(true, true).applyTo(tableAndButtons);\r
-               GridLayoutFactory.fillDefaults().numColumns(2).applyTo(tableAndButtons);\r
-\r
-               Label uses = new Label(tableAndButtons, 0);\r
-               uses.setText("Instances:");\r
-               GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(uses);\r
-\r
-               TableColumnLayout ad = new TableColumnLayout();\r
-               Composite tableComposite = new Composite(tableAndButtons, SWT.NONE);\r
-               GridDataFactory.fillDefaults().grab(true, true).minSize(300, 300).applyTo(tableComposite);\r
-               tableComposite.setLayout(ad);\r
-               TableViewer viewer = new TableViewer(tableComposite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);\r
-               viewer.setContentProvider(new CP());\r
-               TableViewerColumn c1 = new TableViewerColumn(viewer, SWT.LEFT);\r
-               c1.setLabelProvider(new LP());\r
-               ad.setColumnData(c1.getColumn(), new ColumnWeightData(100, 100, true));\r
-\r
-               Composite buttons = new Composite(tableAndButtons, 0);\r
-               GridDataFactory.fillDefaults().grab(false, true).applyTo(buttons);\r
-               GridLayoutFactory.fillDefaults().numColumns(1).applyTo(buttons);\r
-\r
-               Button copyButton = new Button(buttons, SWT.PUSH);\r
-               copyButton.setText("&Copy to Clipboard");\r
-               copyButton.setToolTipText("Copy List Contents to Clipboard");\r
-               copyButton.addSelectionListener(new SelectionAdapter() {\r
-                       @Override\r
-                       public void widgetSelected(SelectionEvent e) {\r
-                               String text = EString.implode(content, String.format("%n"));\r
-                               Clipboard cp = new Clipboard(e.display);\r
-                               cp.setContents(new Object[] { text }, new Transfer[] { TextTransfer.getInstance() });\r
-                               cp.dispose();\r
-                       }\r
-               });\r
-\r
-//             Button navigateButton = new Button(buttons, SWT.PUSH);\r
-//             navigateButton.setText("Go To");\r
-//             navigateButton.setToolTipText("Go To Selected Instances");\r
-\r
-               detailsText = new Text(tableAndButtons, SWT.BORDER | SWT.WRAP | SWT.MULTI | SWT.V_SCROLL);\r
-               Color bg = detailsText.getBackground();\r
-               detailsText.setEditable(false);\r
-               detailsText.setBackground(bg);\r
-               detailsGridData = GridDataFactory.fillDefaults().grab(true, false).hint(SWT.DEFAULT, 100).span(2, 1).create();\r
-               detailsText.setLayoutData(detailsGridData);\r
-\r
-               viewer.addSelectionChangedListener(new ISelectionChangedListener() {\r
-                       @Override\r
-                       public void selectionChanged(SelectionChangedEvent event) {\r
-                               IStructuredSelection sel = (IStructuredSelection) event.getSelection();\r
-                               Content content = (Content)(sel.getFirstElement());\r
-                               showDetails(content);\r
-                       }\r
-               });\r
-               viewer.setInput(content);\r
-\r
-               detailsText.getDisplay().asyncExec(new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               showDetails(null);\r
-                       }\r
-               });\r
-               return tableAndButtons;\r
-       }\r
-\r
-       protected void showDetails(Content content) {\r
-               if (detailsText == null || detailsText.isDisposed())\r
-                       return;\r
-               if (content != null && content.details != null) {\r
-                       detailsText.setText(content.details);\r
-                       if (detailsGridData.exclude) {\r
-                               detailsGridData.exclude = false;\r
-                               detailsGridData.heightHint = 100;\r
-                               tableAndButtons.layout(true, true);\r
-                       }\r
-               } else {\r
-                       detailsText.setText("");\r
-                       if (!detailsGridData.exclude) {\r
-                               detailsGridData.exclude = true;\r
-                               detailsGridData.heightHint = 0;\r
-                               detailsText.setSize(0, 0);\r
-                               tableAndButtons.layout(true, true);\r
-                       }\r
-               }\r
-       }\r
-\r
-       protected class CP implements IStructuredContentProvider {\r
-\r
-               @Override\r
-               public void dispose() {\r
-               }\r
-\r
-               @Override\r
-               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
-               }\r
-\r
-               @Override\r
-               public Object[] getElements(Object inputElement) {\r
-                       return content;\r
-               }\r
-\r
-       }\r
-\r
-       protected class LP extends ColumnLabelProvider {\r
-               @Override\r
-               public Image getImage(Object element) {\r
-                       Content content = (Content) element;\r
-                       return content.image != null ? (Image) resourceManager.get(content.image) : null;\r
-               }\r
-               @Override\r
-               public String getText(Object element) {\r
-                       Content content = (Content) element;\r
-                       return content.label;\r
-               }\r
-       }\r
-\r
-}\r
+package org.simantics.modeling.adapters;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+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.Text;
+import org.simantics.utils.strings.EString;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public class RemoveInstancesDialog extends MessageDialog {
+
+       public static class Content {
+               public String label;
+               public ImageDescriptor image;
+               public String details;
+
+               public Content(String label) {
+                       assert label != null;
+                       this.label = label;
+               }
+
+               @Override
+               public String toString() {
+                       if (details == null)
+                               return label;
+                       return label + "\nDetails: " + details;
+               }
+       }
+
+       protected String message;
+       protected boolean hasDetails; 
+
+       protected Content[] content;
+
+       protected LocalResourceManager resourceManager;
+       protected Composite tableAndButtons;
+       protected Text messageText;
+       protected Text detailsText;
+       private GridData detailsGridData;
+
+       public RemoveInstancesDialog(Shell parentShell, String dialogTitle, String dialogMessage, Content[] content) {
+               this(parentShell,
+                               dialogTitle,
+                               dialogMessage,
+                               MessageDialog.QUESTION,
+                               new String[] {
+                                       IDialogConstants.PROCEED_LABEL,
+                                       IDialogConstants.CANCEL_LABEL
+                               },
+                               1,
+                               content);
+       }
+
+       public RemoveInstancesDialog(Shell parentShell, String dialogTitle, String dialogMessage, int dialogType, String[] buttons, int defaultIndex, Content[] content) {
+               super(parentShell,
+                               dialogTitle,
+                               null,
+                               null,
+                               dialogType,
+                               buttons,
+                               defaultIndex);
+
+               this.message = dialogMessage;
+               this.content = content;
+               this.hasDetails = contentHasDetails(content);
+       }
+
+       private boolean contentHasDetails(Content[] content) {
+               for (Content c : content) {
+                       if (c.details != null && !c.details.trim().isEmpty())
+                               return true;
+               }
+               return false;
+       }
+
+       @Override
+       protected int getShellStyle() {
+               return super.getShellStyle() | SWT.RESIZE;
+       }
+
+       @Override
+       protected Control createDialogArea(Composite parent) {
+               resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent);
+               Composite composite = (Composite) super.createDialogArea(parent);
+               return composite;
+       }
+
+       @Override
+       protected Control createMessageArea(Composite composite) {
+               super.createMessageArea(composite);
+               // create message
+               if (message != null) {
+                       messageText = new Text(composite, getMessageLabelStyle());
+                       messageText.setText(message);
+                       messageText.setEditable(false);
+                       GridDataFactory
+                                       .fillDefaults()
+                                       .align(SWT.FILL, SWT.BEGINNING)
+                                       .grab(true, false)
+                                       .hint(
+                                                       convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH),
+                                                       SWT.DEFAULT).applyTo(messageText);
+               }
+               return composite;
+       }
+
+       @Override
+       protected Control createCustomArea(Composite parent) {
+               tableAndButtons = new Composite(parent, 0);
+               GridDataFactory.fillDefaults().grab(true, true).applyTo(tableAndButtons);
+               GridLayoutFactory.fillDefaults().numColumns(2).applyTo(tableAndButtons);
+
+               Label uses = new Label(tableAndButtons, 0);
+               uses.setText("Instances:");
+               GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(uses);
+
+               TableColumnLayout ad = new TableColumnLayout();
+               Composite tableComposite = new Composite(tableAndButtons, SWT.NONE);
+               GridDataFactory.fillDefaults().grab(true, true).minSize(300, 300).applyTo(tableComposite);
+               tableComposite.setLayout(ad);
+               TableViewer viewer = new TableViewer(tableComposite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
+               viewer.setContentProvider(new CP());
+               TableViewerColumn c1 = new TableViewerColumn(viewer, SWT.LEFT);
+               c1.setLabelProvider(new LP());
+               ad.setColumnData(c1.getColumn(), new ColumnWeightData(100, 100, true));
+
+               Composite buttons = new Composite(tableAndButtons, 0);
+               GridDataFactory.fillDefaults().grab(false, true).applyTo(buttons);
+               GridLayoutFactory.fillDefaults().numColumns(1).applyTo(buttons);
+
+               Button copyButton = new Button(buttons, SWT.PUSH);
+               copyButton.setText("&Copy to Clipboard");
+               copyButton.setToolTipText("Copy List Contents to Clipboard");
+               copyButton.addSelectionListener(new SelectionAdapter() {
+                       @Override
+                       public void widgetSelected(SelectionEvent e) {
+                               String text = EString.implode(content, String.format("%n"));
+                               Clipboard cp = new Clipboard(e.display);
+                               cp.setContents(new Object[] { text }, new Transfer[] { TextTransfer.getInstance() });
+                               cp.dispose();
+                       }
+               });
+
+//             Button navigateButton = new Button(buttons, SWT.PUSH);
+//             navigateButton.setText("Go To");
+//             navigateButton.setToolTipText("Go To Selected Instances");
+
+               detailsText = new Text(tableAndButtons, SWT.BORDER | SWT.WRAP | SWT.MULTI | SWT.V_SCROLL);
+               Color bg = detailsText.getBackground();
+               detailsText.setEditable(false);
+               detailsText.setBackground(bg);
+               detailsGridData = GridDataFactory.fillDefaults().grab(true, false).hint(SWT.DEFAULT, 100).span(2, 1).create();
+               detailsText.setLayoutData(detailsGridData);
+
+               viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+                       @Override
+                       public void selectionChanged(SelectionChangedEvent event) {
+                               IStructuredSelection sel = (IStructuredSelection) event.getSelection();
+                               Content content = (Content)(sel.getFirstElement());
+                               showDetails(content);
+                       }
+               });
+               viewer.setInput(content);
+
+               detailsText.getDisplay().asyncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               showDetails(null);
+                       }
+               });
+               return tableAndButtons;
+       }
+
+       protected void showDetails(Content content) {
+               if (detailsText == null || detailsText.isDisposed())
+                       return;
+               if (content != null && content.details != null) {
+                       detailsText.setText(content.details);
+                       if (detailsGridData.exclude) {
+                               detailsGridData.exclude = false;
+                               detailsGridData.heightHint = 100;
+                               tableAndButtons.layout(true, true);
+                       }
+               } else {
+                       detailsText.setText("");
+                       if (!detailsGridData.exclude) {
+                               detailsGridData.exclude = true;
+                               detailsGridData.heightHint = 0;
+                               detailsText.setSize(0, 0);
+                               tableAndButtons.layout(true, true);
+                       }
+               }
+       }
+
+       protected class CP implements IStructuredContentProvider {
+
+               @Override
+               public void dispose() {
+               }
+
+               @Override
+               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+               }
+
+               @Override
+               public Object[] getElements(Object inputElement) {
+                       return content;
+               }
+
+       }
+
+       protected class LP extends ColumnLabelProvider {
+               @Override
+               public Image getImage(Object element) {
+                       Content content = (Content) element;
+                       return content.image != null ? (Image) resourceManager.get(content.image) : null;
+               }
+               @Override
+               public String getText(Object element) {
+                       Content content = (Content) element;
+                       return content.label;
+               }
+       }
+
+}