Author: adietish
Date: 2010-11-12 12:01:21 -0500 (Fri, 12 Nov 2010)
New Revision: 26522
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.properties
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/adapter/DeltaCloudImageAdapterFactory.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceHandler.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageView.java
Log:
[JBIDE-7558] corrected to use DeltaCloudImage (used CVImageElement before) so that it may
be used in DeltaCloudView and ImageView
added refresh images handler, added context menu to ImageView, removed old action code.
Now all views trigger the same handlers, no duplicate action codes left.
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-11-12 16:53:47
UTC (rev 26521)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-11-12 17:01:21
UTC (rev 26522)
@@ -1,5 +1,11 @@
2010-11-12 André Dietisheim <adietish(a)redhat.com>
+ * src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceHandler.java:
+ [JBIDE-7558] corrected to use DeltaCloudImage (used CVImageElement before) so that it
may be used in DeltaCloudView and ImageView
+ * plugin.xml:
+ * src/org/jboss/tools/deltacloud/ui/views/ImageView.java:
+ * src/org/jboss/tools/deltacloud/ui/commands/RefreshImagesHandler.java:
+ [JBIDE-7558] added refresh images handler, added context menu to ImageView, removed old
action code
* src/org/jboss/tools/deltacloud/ui/views/PerformInstanceActionThread.java (run):
[JBIDE-7365] fixed bad thread access (job is not running in display thread)
* src/org/jboss/tools/internal/deltacloud/ui/utils/UIUtils.java (adapt):
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.properties
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.properties 2010-11-12
16:53:47 UTC (rev 26521)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.properties 2010-11-12
17:01:21 UTC (rev 26522)
@@ -27,6 +27,8 @@
command.refresh.tooltip = Refresh Cloud
command.refreshinstances.label = Refresh Instances
command.refreshisntances.tooltip = Refresh Instances
+command.refreshimages.label = Refresh Images
+command.refreshimages.tooltip = Refresh Images
command.createinstance.label = Launch Instance
command.createinstance.tooltip = Launch Instance
command.filterimages.label = Filter images...
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml 2010-11-12 16:53:47
UTC (rev 26521)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml 2010-11-12 17:01:21
UTC (rev 26522)
@@ -164,6 +164,20 @@
</with>
</activeWhen>
</handler>
+ <handler
+ class="org.jboss.tools.deltacloud.ui.commands.RefreshImagesHandler"
+ commandId="org.eclipse.ui.file.refresh">
+ <activeWhen>
+ <with
+ variable="selection">
+ <iterate>
+ <instanceof
+ value="org.jboss.tools.deltacloud.core.DeltaCloudImage">
+ </instanceof>
+ </iterate>
+ </with>
+ </activeWhen>
+ </handler>
</extension>
<extension
point="org.eclipse.ui.handlers">
@@ -265,9 +279,8 @@
<with
variable="selection">
<iterate operator="and">
- <instanceof
-
value="org.jboss.tools.deltacloud.ui.views.CVImageElement">
- </instanceof>
+ <adapt
+ type="org.jboss.tools.deltacloud.core.DeltaCloudImage" />
</iterate>
</with>
</activeWhen>
@@ -386,6 +399,7 @@
tooltip="%command.filterinstances.tooltip">
</command>
</menuContribution>
+ <!-- refresh -->
<menuContribution
allPopups="true"
locationURI="popup:org.jboss.tools.deltacloud.ui.views.InstanceView?after=additions">
@@ -629,9 +643,60 @@
tooltip="%command.filterinstances.tooltip">
</command>
</menuContribution>
+ </extension>
- </extension>
-
+ <extension point="org.eclipse.ui.menus">
+ <!-- ImageView context menu ================================== -->
+ <menuContribution
+ allPopups="true"
+
locationURI="popup:org.jboss.tools.deltacloud.ui.views.ImageView">
+ <separator
+ name="images"
+ visible="true" />
+ <separator
+ name="filters"
+ visible="true" />
+ <separator
+ name="additions"
+ visible="true" />
+ </menuContribution>
+ <menuContribution
+ allPopups="true"
+
locationURI="popup:org.jboss.tools.deltacloud.ui.views.ImageView?after=images">
+ <!-- image commands -->
+ <command
+ commandId="org.jboss.tools.deltacloud.ui.createinstance"
+ icon="icons/instance.gif"
+ label="%command.createinstance.label"
+ style="push"
+ tooltip="%command.createinstance.tooltip">
+ </command>
+ </menuContribution>
+ <!-- refresh images -->
+ <menuContribution
+ allPopups="true"
+
locationURI="popup:org.jboss.tools.deltacloud.ui.views.ImageView?after=additions">
+ <command
+ commandId="org.eclipse.ui.file.refresh"
+ label="%command.refreshimages.label"
+ style="push"
+ tooltip="%command.refreshimages.tooltip">
+ </command>
+ </menuContribution>
+ <!-- filter images -->
+ <menuContribution
+ allPopups="true"
+
locationURI="popup:org.jboss.tools.deltacloud.ui.views.ImageView?after=filters">
+ <command
+ commandId="org.jboss.tools.deltacloud.ui.filterimages"
+ label="%command.filterimages.label"
+ style="push"
+ tooltip="%command.filterimages.tooltip">
+ </command>
+ </menuContribution>
+
+ </extension>
+
<!-- Commands ========================================= -->
<extension
point="org.eclipse.ui.commands">
@@ -718,6 +783,9 @@
<adapter
type="org.jboss.tools.deltacloud.ui.views.InstancePropertySource">
</adapter>
+ <adapter
+ type="org.jboss.tools.deltacloud.core.DeltaCloudImage">
+ </adapter>
</factory>
<factory
adaptableType="org.jboss.tools.deltacloud.core.DeltaCloudInstance"
@@ -732,6 +800,9 @@
<adapter
type="org.jboss.tools.deltacloud.core.DeltaCloud">
</adapter>
+ <adapter
+ type="org.jboss.tools.deltacloud.core.DeltaCloudImage">
+ </adapter>
</factory>
</extension>
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/adapter/DeltaCloudImageAdapterFactory.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/adapter/DeltaCloudImageAdapterFactory.java 2010-11-12
16:53:47 UTC (rev 26521)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/adapter/DeltaCloudImageAdapterFactory.java 2010-11-12
17:01:21 UTC (rev 26522)
@@ -13,24 +13,26 @@
import org.eclipse.core.runtime.IAdapterFactory;
import org.jboss.tools.deltacloud.core.DeltaCloud;
import org.jboss.tools.deltacloud.core.DeltaCloudImage;
-import org.jboss.tools.internal.deltacloud.ui.utils.UIUtils;
public class DeltaCloudImageAdapterFactory implements IAdapterFactory {
@SuppressWarnings("rawtypes")
- private static final Class[] ADAPTERS = new Class[]{
- DeltaCloud.class
+ private static final Class[] ADAPTERS = new Class[] {
+ DeltaCloud.class,
+ DeltaCloudImage.class
};
-
+
@SuppressWarnings("rawtypes")
@Override
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adaptableObject instanceof DeltaCloudImage) {
- System.err.println("DeltaCloudImageAdapterFactory#getAdapter for " +
adapterType);
- return ((DeltaCloudImage) adaptableObject).getDeltaCloud();
- } else {
- return UIUtils.adapt(adaptableObject, DeltaCloud.class);
+ if (adapterType == DeltaCloud.class) {
+ return ((DeltaCloudImage) adaptableObject).getDeltaCloud();
+ } else if (adapterType == DeltaCloudImage.class) {
+ return adaptableObject;
+ }
}
+ return null;
}
@SuppressWarnings("rawtypes")
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceHandler.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceHandler.java 2010-11-12
16:53:47 UTC (rev 26521)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceHandler.java 2010-11-12
17:01:21 UTC (rev 26522)
@@ -23,9 +23,6 @@
import org.eclipse.ui.handlers.HandlerUtil;
import org.jboss.tools.deltacloud.core.DeltaCloud;
import org.jboss.tools.deltacloud.core.DeltaCloudImage;
-import org.jboss.tools.deltacloud.ui.views.CVCategoryElement;
-import org.jboss.tools.deltacloud.ui.views.CVCloudElement;
-import org.jboss.tools.deltacloud.ui.views.CVImageElement;
import org.jboss.tools.internal.deltacloud.ui.utils.UIUtils;
import org.jboss.tools.internal.deltacloud.ui.wizards.NewInstance;
@@ -38,20 +35,17 @@
public Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getCurrentSelection(event);
if (selection instanceof IStructuredSelection) {
- CVImageElement cvImage = UIUtils.getFirstAdaptedElement(selection,
CVImageElement.class);
- createInstance(cvImage, HandlerUtil.getActiveShell(event));
+ DeltaCloudImage deltaCloudImage = UIUtils.getFirstAdaptedElement(selection,
DeltaCloudImage.class);
+ createInstance(deltaCloudImage, HandlerUtil.getActiveShell(event));
}
return Status.OK_STATUS;
}
- private void createInstance(CVImageElement cvImage, Shell shell) {
- if (cvImage != null) {
- DeltaCloudImage image = (DeltaCloudImage) cvImage.getElement();
- CVCategoryElement images = (CVCategoryElement) cvImage.getParent();
- CVCloudElement cloudElement = (CVCloudElement) images.getParent();
- DeltaCloud cloud = (DeltaCloud) cloudElement.getElement();
- IWizard wizard = new NewInstance(cloud, image);
+ private void createInstance(DeltaCloudImage deltaCloudImage, Shell shell) {
+ if (deltaCloudImage != null) {
+ DeltaCloud deltaCloud = deltaCloudImage.getDeltaCloud();
+ IWizard wizard = new NewInstance(deltaCloud, deltaCloudImage);
WizardDialog dialog = new WizardDialog(shell, wizard);
dialog.create();
dialog.open();
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageView.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageView.java 2010-11-12
16:53:47 UTC (rev 26521)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageView.java 2010-11-12
17:01:21 UTC (rev 26522)
@@ -11,21 +11,13 @@
package org.jboss.tools.deltacloud.ui.views;
import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
@@ -41,13 +33,8 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.jboss.tools.deltacloud.core.DeltaCloud;
@@ -58,16 +45,14 @@
import org.jboss.tools.deltacloud.core.IImageListListener;
import org.jboss.tools.deltacloud.ui.Activator;
import org.jboss.tools.deltacloud.ui.IDeltaCloudPreferenceConstants;
-import org.jboss.tools.internal.deltacloud.ui.wizards.ImageFilter;
-import org.jboss.tools.internal.deltacloud.ui.wizards.NewInstance;
+import org.jboss.tools.internal.deltacloud.ui.utils.UIUtils;
import org.osgi.service.prefs.Preferences;
public class ImageView extends ViewPart implements ICloudManagerListener,
IImageListListener {
+ public static final String ID =
"org.jboss.tools.deltacloud.ui.views.ImageView";
+
private final static String CLOUD_SELECTOR_LABEL = "CloudSelector.label";
//$NON-NLS-1$
- private final static String LAUNCH_INSTANCE = "CreateInstance.label";
//$NON-NLS-1$
- private static final String REFRESH = "Refresh.label"; //$NON-NLS-1$
- private static final String FILTER = "Filter.label"; //$NON-NLS-1$
private static final String FILTERED_LABEL = "Filtered.label"; //$NON-NLS-1$
private static final String FILTERED_TOOLTIP = "FilteredImages.tooltip";
//$NON-NLS-1$
private TableViewer viewer;
@@ -82,10 +67,6 @@
private ImageViewLabelAndContentProvider contentProvider;
- private Action refreshAction;
- private Action filterAction;
- private Action launchAction;
-
private ImageView parentView;
public ImageView() {
@@ -113,7 +94,6 @@
viewer.setInput(currCloud);
currCloud.addImageListListener(parentView);
viewer.refresh();
-
}
});
@@ -198,24 +178,14 @@
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
+ createColumns(tableLayout, table);
contentProvider = new ImageViewLabelAndContentProvider();
viewer.setContentProvider(contentProvider);
viewer.setLabelProvider(contentProvider);
ImageComparator comparator = new ImageComparator(0);
viewer.setComparator(comparator);
+ getSite().setSelectionProvider(viewer);
- for (int i = 0; i < ImageViewLabelAndContentProvider.Column.getSize(); ++i) {
- ImageViewLabelAndContentProvider.Column c =
- ImageViewLabelAndContentProvider.Column.getColumn(i);
- TableColumn tc = new TableColumn(table, SWT.NONE);
- if (i == 0)
- table.setSortColumn(tc);
- tc.setText(CVMessages.getString(c.name()));
- tableLayout.setColumnData(tc, new ColumnWeightData(c.getWeight(), true));
- tc.addSelectionListener(new ColumnListener(i, viewer));
- }
- table.setSortDirection(SWT.NONE);
-
if (currCloud != null) {
currCloud.removeImageListListener(parentView);
viewer.setInput(currCloud);
@@ -252,14 +222,26 @@
// Create the help context id for the viewer's control
PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(),
"org.jboss.tools.deltacloud.ui.viewer");
- makeActions();
hookContextMenu();
hookSelection();
- contributeToActionBars();
DeltaCloudManager.getDefault().addCloudManagerListener(this);
}
+ private void createColumns(TableColumnLayout tableLayout, Table table) {
+ for (int i = 0; i < ImageViewLabelAndContentProvider.Column.getSize(); ++i) {
+ ImageViewLabelAndContentProvider.Column c =
+ ImageViewLabelAndContentProvider.Column.getColumn(i);
+ TableColumn tc = new TableColumn(table, SWT.NONE);
+ if (i == 0)
+ table.setSortColumn(tc);
+ tc.setText(CVMessages.getString(c.name()));
+ tableLayout.setColumnData(tc, new ColumnWeightData(c.getWeight(), true));
+ tc.addSelectionListener(new ColumnListener(i, viewer));
+ }
+ table.setSortDirection(SWT.NONE);
+ }
+
private void hookSelection() {
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
@@ -270,116 +252,18 @@
}
private void hookContextMenu() {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- ImageView.this.fillContextMenu(manager);
- }
- });
- Menu menu = menuMgr.createContextMenu(viewer.getControl());
- viewer.getControl().setMenu(menu);
- getSite().registerContextMenu(menuMgr, viewer);
+ IMenuManager contextMenu = UIUtils.createContextMenu(viewer.getTable());
+ UIUtils.registerContributionManager(UIUtils.getContextMenuId(ID), contextMenu,
viewer.getTable());
}
- private void contributeToActionBars() {
- IActionBars bars = getViewSite().getActionBars();
- fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- }
-
private void handleSelection() {
IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
selectedElement = (DeltaCloudImage) selection.getFirstElement();
}
- private void fillLocalPullDown(IMenuManager manager) {
- manager.add(refreshAction);
- manager.add(filterAction);
- }
-
- private void fillContextMenu(IMenuManager manager) {
- manager.add(launchAction);
- // Other plug-ins can contribute there actions here
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void fillLocalToolBar(IToolBarManager manager) {
- // TODO
- }
-
- private void makeActions() {
- refreshAction = new Action() {
- public void run() {
- Thread t = new Thread(new Runnable() {
-
- @Override
- public void run() {
- if (currCloud != null) {
- currCloud.loadImages();
- }
- }
-
- });
- t.start();
- }
- };
- refreshAction.setText(CVMessages.getString(REFRESH));
- refreshAction.setToolTipText(CVMessages.getString(REFRESH));
- refreshAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
- getImageDescriptor(ISharedImages.IMG_TOOL_REDO));
-
- filterAction = new Action() {
- public void run() {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- // TODO Auto-generated method stub
- Shell shell = viewer.getControl().getShell();
- IWizard wizard = new ImageFilter(currCloud);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.open();
- if (!currCloud.getImageFilter().toString().equals(IImageFilter.ALL_STRING))
- filterLabel.setVisible(true);
- else
- filterLabel.setVisible(false);
- }
-
- });
- }
- };
- filterAction.setText(CVMessages.getString(FILTER));
- filterAction.setToolTipText(CVMessages.getString(FILTER));
-
- launchAction = new Action() {
- public void run() {
- ISelection selection = viewer.getSelection();
- final DeltaCloudImage image = (DeltaCloudImage) ((IStructuredSelection)
selection).getFirstElement();
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- // TODO Auto-generated method stub
- Shell shell = viewer.getControl().getShell();
- IWizard wizard = new NewInstance(currCloud, image);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.open();
- }
-
- });
- }
- };
- launchAction.setText(CVMessages.getString(LAUNCH_INSTANCE));
- launchAction.setToolTipText(CVMessages.getString(LAUNCH_INSTANCE));
- }
-
@Override
public void setFocus() {
- // TODO Auto-generated method stub
-
+ viewer.getTable().setFocus();
}
private void initializeCloudSelector() {