-package org.simantics.scl.ui.imports.internal;\r
-\r
-import gnu.trove.set.hash.THashSet;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.Collections;\r
-\r
-import org.eclipse.jface.dialogs.IDialogSettings;\r
-import org.eclipse.jface.dialogs.TrayDialog;\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.layout.GridLayoutFactory;\r
-import org.eclipse.jface.resource.FontDescriptor;\r
-import org.eclipse.jface.viewers.ArrayContentProvider;\r
-import org.eclipse.jface.viewers.CellEditor;\r
-import org.eclipse.jface.viewers.ColumnLabelProvider;\r
-import org.eclipse.jface.viewers.EditingSupport;\r
-import org.eclipse.jface.viewers.TableViewer;\r
-import org.eclipse.jface.viewers.TableViewerColumn;\r
-import org.eclipse.jface.viewers.TextCellEditor;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.DisposeEvent;\r
-import org.eclipse.swt.events.DisposeListener;\r
-import org.eclipse.swt.events.MenuAdapter;\r
-import org.eclipse.swt.events.MenuEvent;\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.Font;\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.Display;\r
-import org.eclipse.swt.widgets.Menu;\r
-import org.eclipse.swt.widgets.MenuItem;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.swt.widgets.TableItem;\r
-import org.osgi.framework.BundleContext;\r
-import org.osgi.framework.InvalidSyntaxException;\r
-import org.osgi.framework.ServiceReference;\r
-import org.simantics.scl.compiler.commands.CommandSessionImportEntry;\r
-import org.simantics.scl.ui.Activator;\r
-import org.simantics.scl.ui.imports.ImportModulesAction;\r
-\r
-public class ManageImportsDialog extends TrayDialog {\r
-\r
- private static final String DIALOG = "ManageImportsDialog"; //$NON-NLS-1$\r
-\r
- TableViewer tableViewer;\r
- ArrayList<CommandSessionImportEntry> imports;\r
- IDialogSettings dialogBoundsSettings;\r
-\r
- public ManageImportsDialog(Shell shell, ArrayList<CommandSessionImportEntry> imports) {\r
- super(shell);\r
- this.imports = imports;\r
-\r
- IDialogSettings settings = Activator.getInstance().getDialogSettings();\r
- dialogBoundsSettings = settings.getSection(DIALOG);\r
- if (dialogBoundsSettings == null)\r
- dialogBoundsSettings = settings.addNewSection(DIALOG);\r
- }\r
-\r
- @Override\r
- protected IDialogSettings getDialogBoundsSettings() {\r
- return dialogBoundsSettings;\r
- }\r
-\r
- @Override\r
- protected void configureShell(Shell newShell) {\r
- super.configureShell(newShell);\r
- newShell.setText("Manage Imports");\r
- newShell.setMinimumSize(800, 600);\r
- }\r
-\r
- @Override\r
- protected Control createDialogArea(Composite parent) {\r
- final Composite composite = (Composite) super.createDialogArea(parent);\r
- GridLayoutFactory.fillDefaults().margins(10,10).numColumns(2).applyTo(composite);\r
- GridDataFactory.fillDefaults().grab(true,true).applyTo(composite);\r
- \r
- tableViewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);\r
- GridDataFactory.fillDefaults().grab(true, true).applyTo(tableViewer.getControl());\r
-\r
- // Colors\r
- Display display = getShell().getDisplay(); \r
- final Color black = display.getSystemColor(SWT.COLOR_BLACK);\r
- final Color gray = display.getSystemColor(SWT.COLOR_GRAY);\r
- final Color red = display.getSystemColor(SWT.COLOR_RED);\r
- \r
- // Fonts\r
- final Font systemFont = display.getSystemFont();\r
- final Font bold = FontDescriptor.createFrom(systemFont).setStyle(SWT.BOLD).createFont(display);\r
- tableViewer.getTable().addDisposeListener(new DisposeListener() {\r
- @Override\r
- public void widgetDisposed(DisposeEvent e) {\r
- bold.dispose();\r
- }\r
- });\r
- \r
- // Column 1: module name\r
- TableViewerColumn column1 = new TableViewerColumn(tableViewer, SWT.NONE);\r
- column1.getColumn().setWidth(300);\r
- column1.getColumn().setText("Module");\r
- column1.setLabelProvider(new ColumnLabelProvider() {\r
- @Override\r
- public String getText(Object element) {\r
- return ((CommandSessionImportEntry)element).moduleName;\r
- }\r
- public Color getForeground(Object element) {\r
- CommandSessionImportEntry entry = (CommandSessionImportEntry)element;\r
- if(entry.disabled)\r
- return gray;\r
- else if(entry.hasError)\r
- return red;\r
- else\r
- return black;\r
- }\r
- public Font getFont(Object element) {\r
- CommandSessionImportEntry entry = (CommandSessionImportEntry)element;\r
- if(entry.persistent)\r
- return bold;\r
- else\r
- return systemFont;\r
- }\r
- });\r
- column1.setEditingSupport(new EditingSupport(tableViewer) {\r
- CellEditor editor = new TextCellEditor(tableViewer.getTable());\r
- @Override\r
- protected CellEditor getCellEditor(Object element) {\r
- return editor;\r
- }\r
- @Override\r
- protected boolean canEdit(Object element) {\r
- return true;\r
- }\r
- @Override\r
- protected Object getValue(Object element) {\r
- return ((CommandSessionImportEntry)element).moduleName;\r
- }\r
- @Override\r
- protected void setValue(Object element, Object value) {\r
- ((CommandSessionImportEntry)element).moduleName = (String)value;\r
- getViewer().update(element, null);\r
- }\r
- });\r
- \r
- // Column 2: local name\r
- TableViewerColumn column2 = new TableViewerColumn(tableViewer, SWT.NONE);\r
- column2.getColumn().setWidth(100);\r
- column2.getColumn().setText("Local name");\r
- column2.setLabelProvider(new ColumnLabelProvider() {\r
- @Override\r
- public String getText(Object element) {\r
- return ((CommandSessionImportEntry)element).localName;\r
- }\r
- });\r
- column2.setEditingSupport(new EditingSupport(tableViewer) {\r
- CellEditor editor = new TextCellEditor(tableViewer.getTable());\r
- @Override\r
- protected CellEditor getCellEditor(Object element) {\r
- return editor;\r
- }\r
- @Override\r
- protected boolean canEdit(Object element) {\r
- return true;\r
- }\r
- @Override\r
- protected Object getValue(Object element) {\r
- return ((CommandSessionImportEntry)element).localName;\r
- }\r
- @Override\r
- protected void setValue(Object element, Object value) {\r
- ((CommandSessionImportEntry)element).localName = (String)value;\r
- getViewer().update(element, null);\r
- }\r
- });\r
- \r
- // Column 3: status\r
- TableViewerColumn column3 = new TableViewerColumn(tableViewer, SWT.NONE);\r
- column3.getColumn().setWidth(200);\r
- column3.getColumn().setText("Status");\r
- column3.setLabelProvider(new ColumnLabelProvider() {\r
- @Override\r
- public String getText(Object element) {\r
- return ((CommandSessionImportEntry)element).getStatusString();\r
- }\r
- });\r
- \r
- // Decorations\r
- tableViewer.getTable().setHeaderVisible(true);\r
- tableViewer.getTable().setLinesVisible(true);\r
- \r
- // Selection\r
- final Menu menu = new Menu(tableViewer.getTable());\r
- tableViewer.getTable().setMenu(menu);\r
- menu.addMenuListener(new MenuAdapter() {\r
- @Override\r
- public void menuShown(MenuEvent e) {\r
- MenuItem[] items = menu.getItems();\r
- for(int i=0;i < items.length;++i)\r
- items[i].dispose();\r
- TableItem[] tableItems = tableViewer.getTable().getSelection();\r
- final CommandSessionImportEntry[] entries = new CommandSessionImportEntry[tableItems.length];\r
- for(int i=0;i<tableItems.length;++i)\r
- entries[i] = (CommandSessionImportEntry)tableItems[i].getData();\r
- \r
- boolean hasPersistent = false;\r
- boolean hasTransient = false;\r
- boolean hasEnabled = false;\r
- boolean hasDisabled = false;\r
- \r
- for(CommandSessionImportEntry entry : entries) {\r
- if(entry.persistent)\r
- hasPersistent = true;\r
- else\r
- hasTransient = true;\r
- if(entry.disabled)\r
- hasDisabled = true;\r
- else\r
- hasEnabled = true;\r
- }\r
- \r
- {\r
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
- menuItem.setText("Delete");\r
- menuItem.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- THashSet<CommandSessionImportEntry> removedEntries =\r
- new THashSet<CommandSessionImportEntry>(Arrays.asList(entries)); \r
- ArrayList<CommandSessionImportEntry> newImports = new ArrayList<CommandSessionImportEntry>(imports.size());\r
- for(CommandSessionImportEntry entry : imports)\r
- if(!removedEntries.contains(entry))\r
- newImports.add(entry);\r
- imports = newImports;\r
- setInput();\r
- }\r
- });\r
- }\r
- if(hasTransient) {\r
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
- menuItem.setText("Make persistent");\r
- menuItem.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- for(CommandSessionImportEntry entry : entries)\r
- entry.persistent = true;\r
- setInput();\r
- }\r
- });\r
- }\r
- if(hasPersistent) {\r
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
- menuItem.setText("Make transient");\r
- menuItem.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- for(CommandSessionImportEntry entry : entries)\r
- entry.persistent = false;\r
- setInput();\r
- }\r
- });\r
- }\r
- if(hasDisabled) {\r
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
- menuItem.setText("Enable");\r
- menuItem.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- for(CommandSessionImportEntry entry : entries)\r
- entry.disabled = false;\r
- setInput();\r
- }\r
- });\r
- }\r
- if(hasEnabled) {\r
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
- menuItem.setText("Disable");\r
- menuItem.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- for(CommandSessionImportEntry entry : entries)\r
- entry.disabled = true;\r
- setInput();\r
- }\r
- });\r
- }\r
- }\r
- });\r
- \r
- // Table content\r
- tableViewer.setContentProvider(ArrayContentProvider.getInstance());\r
- setInput();\r
- \r
- // Buttons\r
- Composite buttonComposite = new Composite(composite, SWT.NONE);\r
- GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.BEGINNING).applyTo(buttonComposite);\r
- GridLayoutFactory.fillDefaults().applyTo(buttonComposite);\r
- \r
- BundleContext context = Activator.getInstance().getBundle().getBundleContext();\r
- ArrayList<ImportModulesAction> actions = new ArrayList<ImportModulesAction>();\r
- try {\r
- for(ServiceReference<ImportModulesAction> ref : \r
- context.getServiceReferences(ImportModulesAction.class, null)) {\r
- ImportModulesAction action = context.getService(ref);\r
- actions.add(action);\r
- }\r
- } catch (InvalidSyntaxException e1) {\r
- e1.printStackTrace();\r
- }\r
- \r
- Collections.sort(actions);\r
- \r
- for(final ImportModulesAction action : actions) {\r
- Button button = new Button(buttonComposite, SWT.NONE);\r
- GridDataFactory.fillDefaults().applyTo(button);\r
- button.setText(action.name);\r
- button.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- if(action.editImports(getShell(), imports))\r
- setInput();\r
- }\r
- });\r
- }\r
- return composite;\r
- }\r
- \r
- private void setInput() {\r
- CommandSessionImportEntry[] array = imports.toArray(new CommandSessionImportEntry[imports.size()]);\r
- Arrays.sort(array);\r
- tableViewer.setInput(array);\r
- }\r
-\r
- public ArrayList<CommandSessionImportEntry> getImports() {\r
- return imports;\r
- }\r
- \r
- @Override\r
- protected boolean isResizable() {\r
- return true;\r
- }\r
-}\r
+package org.simantics.scl.ui.imports.internal;
+
+import gnu.trove.set.hash.THashSet;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.FontDescriptor;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.MenuAdapter;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+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.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TableItem;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.simantics.scl.compiler.commands.CommandSessionImportEntry;
+import org.simantics.scl.ui.Activator;
+import org.simantics.scl.ui.imports.ImportModulesAction;
+
+public class ManageImportsDialog extends TrayDialog {
+
+ private static final String DIALOG = "ManageImportsDialog"; //$NON-NLS-1$
+
+ TableViewer tableViewer;
+ ArrayList<CommandSessionImportEntry> imports;
+ IDialogSettings dialogBoundsSettings;
+
+ public ManageImportsDialog(Shell shell, ArrayList<CommandSessionImportEntry> imports) {
+ super(shell);
+ this.imports = imports;
+
+ IDialogSettings settings = Activator.getInstance().getDialogSettings();
+ dialogBoundsSettings = settings.getSection(DIALOG);
+ if (dialogBoundsSettings == null)
+ dialogBoundsSettings = settings.addNewSection(DIALOG);
+ }
+
+ @Override
+ protected IDialogSettings getDialogBoundsSettings() {
+ return dialogBoundsSettings;
+ }
+
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText("Manage Imports");
+ newShell.setMinimumSize(800, 600);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ final Composite composite = (Composite) super.createDialogArea(parent);
+ GridLayoutFactory.fillDefaults().margins(10,10).numColumns(2).applyTo(composite);
+ GridDataFactory.fillDefaults().grab(true,true).applyTo(composite);
+
+ tableViewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
+ GridDataFactory.fillDefaults().grab(true, true).applyTo(tableViewer.getControl());
+
+ // Colors
+ Display display = getShell().getDisplay();
+ final Color black = display.getSystemColor(SWT.COLOR_BLACK);
+ final Color gray = display.getSystemColor(SWT.COLOR_GRAY);
+ final Color red = display.getSystemColor(SWT.COLOR_RED);
+
+ // Fonts
+ final Font systemFont = display.getSystemFont();
+ final Font bold = FontDescriptor.createFrom(systemFont).setStyle(SWT.BOLD).createFont(display);
+ tableViewer.getTable().addDisposeListener(new DisposeListener() {
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ bold.dispose();
+ }
+ });
+
+ // Column 1: module name
+ TableViewerColumn column1 = new TableViewerColumn(tableViewer, SWT.NONE);
+ column1.getColumn().setWidth(300);
+ column1.getColumn().setText("Module");
+ column1.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ return ((CommandSessionImportEntry)element).moduleName;
+ }
+ public Color getForeground(Object element) {
+ CommandSessionImportEntry entry = (CommandSessionImportEntry)element;
+ if(entry.disabled)
+ return gray;
+ else if(entry.hasError)
+ return red;
+ else
+ return black;
+ }
+ public Font getFont(Object element) {
+ CommandSessionImportEntry entry = (CommandSessionImportEntry)element;
+ if(entry.persistent)
+ return bold;
+ else
+ return systemFont;
+ }
+ });
+ column1.setEditingSupport(new EditingSupport(tableViewer) {
+ CellEditor editor = new TextCellEditor(tableViewer.getTable());
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ return editor;
+ }
+ @Override
+ protected boolean canEdit(Object element) {
+ return true;
+ }
+ @Override
+ protected Object getValue(Object element) {
+ return ((CommandSessionImportEntry)element).moduleName;
+ }
+ @Override
+ protected void setValue(Object element, Object value) {
+ ((CommandSessionImportEntry)element).moduleName = (String)value;
+ getViewer().update(element, null);
+ }
+ });
+
+ // Column 2: local name
+ TableViewerColumn column2 = new TableViewerColumn(tableViewer, SWT.NONE);
+ column2.getColumn().setWidth(100);
+ column2.getColumn().setText("Local name");
+ column2.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ return ((CommandSessionImportEntry)element).localName;
+ }
+ });
+ column2.setEditingSupport(new EditingSupport(tableViewer) {
+ CellEditor editor = new TextCellEditor(tableViewer.getTable());
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ return editor;
+ }
+ @Override
+ protected boolean canEdit(Object element) {
+ return true;
+ }
+ @Override
+ protected Object getValue(Object element) {
+ return ((CommandSessionImportEntry)element).localName;
+ }
+ @Override
+ protected void setValue(Object element, Object value) {
+ ((CommandSessionImportEntry)element).localName = (String)value;
+ getViewer().update(element, null);
+ }
+ });
+
+ // Column 3: status
+ TableViewerColumn column3 = new TableViewerColumn(tableViewer, SWT.NONE);
+ column3.getColumn().setWidth(200);
+ column3.getColumn().setText("Status");
+ column3.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ return ((CommandSessionImportEntry)element).getStatusString();
+ }
+ });
+
+ // Decorations
+ tableViewer.getTable().setHeaderVisible(true);
+ tableViewer.getTable().setLinesVisible(true);
+
+ // Selection
+ final Menu menu = new Menu(tableViewer.getTable());
+ tableViewer.getTable().setMenu(menu);
+ menu.addMenuListener(new MenuAdapter() {
+ @Override
+ public void menuShown(MenuEvent e) {
+ MenuItem[] items = menu.getItems();
+ for(int i=0;i < items.length;++i)
+ items[i].dispose();
+ TableItem[] tableItems = tableViewer.getTable().getSelection();
+ final CommandSessionImportEntry[] entries = new CommandSessionImportEntry[tableItems.length];
+ for(int i=0;i<tableItems.length;++i)
+ entries[i] = (CommandSessionImportEntry)tableItems[i].getData();
+
+ boolean hasPersistent = false;
+ boolean hasTransient = false;
+ boolean hasEnabled = false;
+ boolean hasDisabled = false;
+
+ for(CommandSessionImportEntry entry : entries) {
+ if(entry.persistent)
+ hasPersistent = true;
+ else
+ hasTransient = true;
+ if(entry.disabled)
+ hasDisabled = true;
+ else
+ hasEnabled = true;
+ }
+
+ {
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ menuItem.setText("Delete");
+ menuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ THashSet<CommandSessionImportEntry> removedEntries =
+ new THashSet<CommandSessionImportEntry>(Arrays.asList(entries));
+ ArrayList<CommandSessionImportEntry> newImports = new ArrayList<CommandSessionImportEntry>(imports.size());
+ for(CommandSessionImportEntry entry : imports)
+ if(!removedEntries.contains(entry))
+ newImports.add(entry);
+ imports = newImports;
+ setInput();
+ }
+ });
+ }
+ if(hasTransient) {
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ menuItem.setText("Make persistent");
+ menuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ for(CommandSessionImportEntry entry : entries)
+ entry.persistent = true;
+ setInput();
+ }
+ });
+ }
+ if(hasPersistent) {
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ menuItem.setText("Make transient");
+ menuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ for(CommandSessionImportEntry entry : entries)
+ entry.persistent = false;
+ setInput();
+ }
+ });
+ }
+ if(hasDisabled) {
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ menuItem.setText("Enable");
+ menuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ for(CommandSessionImportEntry entry : entries)
+ entry.disabled = false;
+ setInput();
+ }
+ });
+ }
+ if(hasEnabled) {
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ menuItem.setText("Disable");
+ menuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ for(CommandSessionImportEntry entry : entries)
+ entry.disabled = true;
+ setInput();
+ }
+ });
+ }
+ }
+ });
+
+ // Table content
+ tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+ setInput();
+
+ // Buttons
+ Composite buttonComposite = new Composite(composite, SWT.NONE);
+ GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.BEGINNING).applyTo(buttonComposite);
+ GridLayoutFactory.fillDefaults().applyTo(buttonComposite);
+
+ BundleContext context = Activator.getInstance().getBundle().getBundleContext();
+ ArrayList<ImportModulesAction> actions = new ArrayList<ImportModulesAction>();
+ try {
+ for(ServiceReference<ImportModulesAction> ref :
+ context.getServiceReferences(ImportModulesAction.class, null)) {
+ ImportModulesAction action = context.getService(ref);
+ actions.add(action);
+ }
+ } catch (InvalidSyntaxException e1) {
+ e1.printStackTrace();
+ }
+
+ Collections.sort(actions);
+
+ for(final ImportModulesAction action : actions) {
+ Button button = new Button(buttonComposite, SWT.NONE);
+ GridDataFactory.fillDefaults().applyTo(button);
+ button.setText(action.name);
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if(action.editImports(getShell(), imports))
+ setInput();
+ }
+ });
+ }
+ return composite;
+ }
+
+ private void setInput() {
+ CommandSessionImportEntry[] array = imports.toArray(new CommandSessionImportEntry[imports.size()]);
+ Arrays.sort(array);
+ tableViewer.setInput(array);
+ }
+
+ public ArrayList<CommandSessionImportEntry> getImports() {
+ return imports;
+ }
+
+ @Override
+ protected boolean isResizable() {
+ return true;
+ }
+}