Author: jjohnstn
Date: 2010-08-17 13:19:21 -0400 (Tue, 17 Aug 2010)
New Revision: 24217
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageComparator.java
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/ImageViewLabelAndContentProvider.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVInstancesCategoryElement.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVMessages.properties
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVRootElement.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudView.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceView.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ProfileComposite.java
Log:
2010-08-17 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/deltacloud/ui/views/ImageComparator.java: New file.
* src/org/jboss/tools/deltacloud/ui/views/ImageView.java: New file.
* src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java: New
file.
* plugin.xml: Add new Image view.
* src/org/jboss/tools/deltacloud/ui/views/CVInstancesCategoryElement.java (finalize): New
override
to ensure this class isn't registered as a listener.
* src/org/jboss/tools/deltacloud/ui/views/CVMessages.properties: Add destroy messages.
* src/org/jboss/tools/deltacloud/ui/views/CVRootElement.java: (finalize): Remove this
class as a cloud listener.
* src/org/jboss/tools/deltacloud/ui/views/DeltaCloudView.java (dispose): Remove this
class
as a cloud listener.
* src/org/jboss/tools/deltacloud/ui/views/InstanceView.java (dispose): Remove this class
as an instance and cloud listener.
(createPartControl): Fix listener management.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java (performFinish):
Get
any hardware memory or storage settings and pass them to the new DeltaCloud
createInstance
API.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/ProfileComposite.java (getMemory):
Don't
add in decimal point to value as widget does this automatically.
(getStorage): Ditto.
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-08-17 14:46:11
UTC (rev 24216)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-08-17 17:19:21
UTC (rev 24217)
@@ -1,3 +1,26 @@
+2010-08-17 Jeff Johnston <jjohnstn(a)redhat.com>
+
+ * src/org/jboss/tools/deltacloud/ui/views/ImageComparator.java: New file.
+ * src/org/jboss/tools/deltacloud/ui/views/ImageView.java: New file.
+ * src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java: New
file.
+ * plugin.xml: Add new Image view.
+ * src/org/jboss/tools/deltacloud/ui/views/CVInstancesCategoryElement.java (finalize):
New override
+ to ensure this class isn't registered as a listener.
+ * src/org/jboss/tools/deltacloud/ui/views/CVMessages.properties: Add destroy messages.
+ * src/org/jboss/tools/deltacloud/ui/views/CVRootElement.java: (finalize): Remove this
+ class as a cloud listener.
+ * src/org/jboss/tools/deltacloud/ui/views/DeltaCloudView.java (dispose): Remove this
class
+ as a cloud listener.
+ * src/org/jboss/tools/deltacloud/ui/views/InstanceView.java (dispose): Remove this
class
+ as an instance and cloud listener.
+ (createPartControl): Fix listener management.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java (performFinish):
Get
+ any hardware memory or storage settings and pass them to the new DeltaCloud
createInstance
+ API.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/ProfileComposite.java (getMemory):
Don't
+ add in decimal point to value as widget does this automatically.
+ (getStorage): Ditto.
+
2010-08-16 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnectionPage.java: Fix
warning.
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml 2010-08-17 14:46:11
UTC (rev 24216)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/plugin.xml 2010-08-17 17:19:21
UTC (rev 24217)
@@ -22,6 +22,14 @@
id="org.jboss.tools.deltacloud.ui.views.InstanceView"
name="%InstanceViewer.name">
</view>
+ <view
+ category="org.jboss.tools.deltacloud.ui"
+ class="org.jboss.tools.deltacloud.ui.views.ImageView"
+ icon="icons/delta.gif"
+ id="org.jboss.tools.deltacloud.ui.views.ImageView"
+ name="%ImageViewer.name"
+ restorable="true">
+ </view>
</extension>
<extension
point="org.eclipse.help.contexts">
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVInstancesCategoryElement.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVInstancesCategoryElement.java 2010-08-17
14:46:11 UTC (rev 24216)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVInstancesCategoryElement.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -20,6 +20,12 @@
this.category = this;
}
+ protected void finalize() throws Throwable {
+ DeltaCloud cloud = (DeltaCloud)getElement();
+ cloud.removeInstanceListListener(this);
+ super.finalize();
+ }
+
@Override
public Object[] getChildren() {
if (!initialized) {
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVMessages.properties
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVMessages.properties 2010-08-17
14:46:11 UTC (rev 24216)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVMessages.properties 2010-08-17
17:19:21 UTC (rev 24217)
@@ -34,8 +34,12 @@
StoppingInstance.msg=Stopping Instance: {0}
RebootingInstance.title=Rebooting Instance
RebootingInstance.msg=Rebooting Instance: {0}
+DestroyingInstance.title=Destroying Instance
+DestroyingInstance.msg=Destroying Instance: {0}
NAME=Name
ID=ID
HOSTNAME=Public Hostname
-STATUS=State
\ No newline at end of file
+STATUS=State
+ARCH=Architecture
+DESC=Description
\ No newline at end of file
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVRootElement.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVRootElement.java 2010-08-17
14:46:11 UTC (rev 24216)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/CVRootElement.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -41,6 +41,11 @@
}
@Override
+ protected void finalize() throws Throwable {
+ DeltaCloudManager.getDefault().removeCloudManagerListener(this);
+ super.finalize();
+ }
+
public void changeEvent(int type) {
DeltaCloudManager m = DeltaCloudManager.getDefault();
m.removeCloudManagerListener(this);
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudView.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudView.java 2010-08-17
14:46:11 UTC (rev 24216)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudView.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -1,6 +1,5 @@
package org.jboss.tools.deltacloud.ui.views;
-
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -84,6 +83,12 @@
DeltaCloudManager.getDefault().addCloudManagerListener(this);
}
+ @Override
+ public void dispose() {
+ DeltaCloudManager.getDefault().removeCloudManagerListener(this);
+ super.dispose();
+ }
+
private void hookSelection() {
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageComparator.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageComparator.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageComparator.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -0,0 +1,49 @@
+package org.jboss.tools.deltacloud.ui.views;
+
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.jboss.tools.deltacloud.core.DeltaCloudImage;
+
+public class ImageComparator extends ViewerComparator {
+
+ private final static int UP = 1;
+
+ private int column;
+ private int direction;
+
+ public ImageComparator(int column) {
+ this.column = column;
+ this.direction = UP;
+ }
+
+ public void setColumn(int newColumn) {
+ if (column != newColumn)
+ direction = UP;
+ column = newColumn;
+ }
+
+ public int getColumn() {
+ return column;
+ }
+
+ public void reverseDirection() {
+ direction *= -1;
+ }
+
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ if (!(e1 instanceof DeltaCloudImage) || !(e2 instanceof DeltaCloudImage))
+ return 0;
+
+ int tmp = compareByColumn(viewer, (DeltaCloudImage)e1, (DeltaCloudImage)e2);
+ return tmp * direction;
+ }
+
+ private int compareByColumn(Viewer viewer, DeltaCloudImage e1, DeltaCloudImage e2) {
+ ImageViewLabelAndContentProvider provider =
(ImageViewLabelAndContentProvider)((TableViewer)viewer).getContentProvider();
+ String s1 = provider.getColumnText(e1, column);
+ String s2 = provider.getColumnText(e2, column);
+ return s1.compareToIgnoreCase(s2);
+ }
+}
Added:
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
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageView.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -0,0 +1,364 @@
+package org.jboss.tools.deltacloud.ui.views;
+
+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.dialogs.MessageDialog;
+import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+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;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Combo;
+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.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+import org.jboss.tools.deltacloud.core.DeltaCloud;
+import org.jboss.tools.deltacloud.core.DeltaCloudImage;
+import org.jboss.tools.deltacloud.core.DeltaCloudManager;
+import org.jboss.tools.deltacloud.core.ICloudManagerListener;
+import org.jboss.tools.deltacloud.core.IImageListListener;
+import org.jboss.tools.internal.deltacloud.ui.wizards.NewInstance;
+
+public class ImageView extends ViewPart implements ICloudManagerListener,
IImageListListener {
+
+ private final static String CLOUD_SELECTOR_LABEL = "CloudSelector.label";
//$NON-NLS-1$
+ private final static String LAUNCH_INSTANCE = "CreateInstance.label";
//$NON-NLS-1$
+
+ private TableViewer viewer;
+ private Composite container;
+ private Combo cloudSelector;
+ @SuppressWarnings("unused")
+ private DeltaCloudImage selectedElement;
+
+ private DeltaCloud[] clouds;
+ private DeltaCloud currCloud;
+
+ private ImageViewLabelAndContentProvider contentProvider;
+
+ private Action doubleClickAction;
+ private Action launchAction;
+
+ private ImageView parentView;
+
+ public ImageView() {
+ parentView = this;
+ }
+
+ private ModifyListener cloudModifyListener = new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ int index = cloudSelector.getSelectionIndex();
+ currCloud = clouds[index];
+ Display.getCurrent().asyncExec(new Runnable() {
+
+ @Override
+ public void run() {
+ // TODO Auto-generated method stub
+ currCloud.removeImageListListener(parentView);
+ viewer.setInput(currCloud);
+ currCloud.addImageListListener(parentView);
+ viewer.refresh();
+
+ }
+
+ });
+ }
+
+ };
+
+ private class ColumnListener extends SelectionAdapter {
+
+ private int column;
+ private TableViewer viewer;
+
+ public ColumnListener(int column, TableViewer viewer) {
+ this.column = column;
+ this.viewer = viewer;
+ }
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ImageComparator comparator = (ImageComparator)viewer.getComparator();
+ Table t = viewer.getTable();
+ if (comparator.getColumn() == column) {
+ comparator.reverseDirection();
+ }
+ comparator.setColumn(column);
+ TableColumn tc = (TableColumn)e.getSource();
+ t.setSortColumn(tc);
+ t.setSortDirection(SWT.NONE);
+ viewer.refresh();
+ }
+
+ };
+
+ @Override
+ public void dispose() {
+ for (DeltaCloud cloud : clouds) {
+ cloud.removeImageListListener(this);
+ }
+ DeltaCloudManager.getDefault().removeCloudManagerListener(this);
+ super.dispose();
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ container = new Composite(parent, SWT.NULL);
+ FormLayout layout = new FormLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ container.setLayout(layout);
+
+ Label cloudSelectorLabel = new Label(container, SWT.NULL);
+ cloudSelectorLabel.setText(CVMessages.getString(CLOUD_SELECTOR_LABEL));
+
+ cloudSelector = new Combo(container, SWT.BORDER | SWT.READ_ONLY);
+ initializeCloudSelector();
+ cloudSelector.addModifyListener(cloudModifyListener);
+ // Following is a kludge so that on Linux the Combo is read-only but
+ // has a white background.
+ cloudSelector.addVerifyListener(new VerifyListener() {
+ @Override
+ public void verifyText(VerifyEvent e) {
+ e.doit = false;
+ }
+ });
+
+ Composite tableArea = new Composite(container, SWT.NULL);
+ TableColumnLayout tableLayout = new TableColumnLayout();
+ tableArea.setLayout(tableLayout);
+
+ viewer = new TableViewer(tableArea, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL |
SWT.BORDER);
+ Table table = viewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ contentProvider = new ImageViewLabelAndContentProvider();
+ viewer.setContentProvider(contentProvider);
+ viewer.setLabelProvider(contentProvider);
+ ImageComparator comparator = new ImageComparator(0);
+ viewer.setComparator(comparator);
+
+ 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 (clouds.length > 0) {
+ currCloud = clouds[0];
+ currCloud.removeImageListListener(parentView);
+ viewer.setInput(clouds[0]);
+ currCloud.addImageListListener(parentView);
+ }
+
+ FormData f = new FormData();
+ f.top = new FormAttachment(0, 8);
+ f.left = new FormAttachment(0, 30);
+ cloudSelectorLabel.setLayoutData(f);
+
+ f = new FormData();
+ f.top = new FormAttachment(0, 5);
+ f.left = new FormAttachment(cloudSelectorLabel, 5);
+ cloudSelector.setLayoutData(f);
+
+ f = new FormData();
+ f.top = new FormAttachment(cloudSelector, 8);
+ f.left = new FormAttachment(0, 0);
+ f.right = new FormAttachment(100, 0);
+ f.bottom = new FormAttachment(100, 0);
+ tableArea.setLayoutData(f);
+
+ // Create the help context id for the viewer's control
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(),
"org.jboss.tools.deltacloud.ui.viewer");
+ makeActions();
+ hookContextMenu();
+ hookDoubleClickAction();
+ hookSelection();
+ contributeToActionBars();
+
+ DeltaCloudManager.getDefault().addCloudManagerListener(this);
+ }
+
+ private void hookSelection() {
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ handleSelection();
+ }
+ });
+ }
+
+ 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);
+ }
+
+ 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) {
+ //TODO
+ }
+
+ 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() {
+ doubleClickAction = new Action() {
+ public void run() {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ showMessage("Double-click detected on "+obj.toString());
+ }
+ };
+
+ 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));
+ }
+
+ private void hookDoubleClickAction() {
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickAction.run();
+ }
+ });
+ }
+
+ private void showMessage(String message) {
+ MessageDialog.openInformation(
+ viewer.getControl().getShell(),
+ CVMessages.getString("CloudViewName"), //$NON-NLS-1$
+ message);
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void initializeCloudSelector() {
+ clouds = DeltaCloudManager.getDefault().getClouds();
+ String[] cloudNames = new String[clouds.length];
+ for (int i = 0; i < clouds.length; ++i) {
+ cloudNames[i] = clouds[i].getName();
+ }
+ cloudSelector.setItems(cloudNames);
+ if (clouds.length > 0) {
+ cloudSelector.setText(cloudNames[0]);
+ currCloud = clouds[0];
+ }
+ }
+
+ public void changeEvent(int type) {
+ String currName = null;
+ clouds = DeltaCloudManager.getDefault().getClouds();
+ if (currCloud != null) {
+ currName = currCloud.getName();
+ }
+ String[] cloudNames = new String[clouds.length];
+ int index = 0;
+ for (int i = 0; i < clouds.length; ++i) {
+ cloudNames[i] = clouds[i].getName();
+ if (cloudNames[i].equals(currName))
+ index = i;
+ }
+ cloudSelector.removeModifyListener(cloudModifyListener);
+ cloudSelector.setItems(cloudNames);
+ if (cloudNames.length > 0) {
+ cloudSelector.setText(cloudNames[index]);
+ currCloud = clouds[index];
+ viewer.setInput(currCloud);
+ } else {
+ currCloud = null;
+ cloudSelector.setText("");
+ viewer.setInput(new DeltaCloudImage[0]);
+ }
+ cloudSelector.addModifyListener(cloudModifyListener);
+ }
+
+ public void listChanged(DeltaCloudImage[] list) {
+ currCloud.removeImageListListener(parentView);
+ viewer.setInput(list);
+ currCloud.addImageListListener(parentView);
+ viewer.refresh();
+ }
+
+}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -0,0 +1,104 @@
+package org.jboss.tools.deltacloud.ui.views;
+
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.viewers.BaseLabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.Image;
+import org.jboss.tools.deltacloud.core.DeltaCloud;
+import org.jboss.tools.deltacloud.core.DeltaCloudImage;
+
+public class ImageViewLabelAndContentProvider extends BaseLabelProvider implements
IStructuredContentProvider, ITableLabelProvider {
+
+ private DeltaCloud cloud;
+ private DeltaCloudImage[] images;
+
+ public enum Column {
+ NAME(0, 30),
+ ID(1, 20),
+ ARCH(2, 20),
+ DESC(3, 30);
+
+ private int column;
+ private int weight;
+ private static final Map<Integer,Column> lookup
+ = new HashMap<Integer,Column>();
+
+ static {
+ for(Column c : EnumSet.allOf(Column.class))
+ lookup.put(c.getColumnNumber(), c);
+ }
+
+ private Column(int column, int weight) {
+ this.column = column;
+ this.weight = weight;
+ }
+
+ public int getColumnNumber() {
+ return column;
+ }
+
+ public int getWeight() {
+ return weight;
+ }
+
+ public static Column getColumn(int number) {
+ return lookup.get(number);
+ }
+
+ public static int getSize() {
+ return lookup.size();
+ }
+
+ };
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return images;
+ }
+
+ @Override
+ public void dispose() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput != null) {
+ if (newInput instanceof DeltaCloudImage[]) {
+ images = (DeltaCloudImage[])newInput;
+ } else {
+ cloud = (DeltaCloud)newInput;
+ images = cloud.getImages();
+ }
+ }
+ }
+
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ Column c = Column.getColumn(columnIndex);
+ DeltaCloudImage i = (DeltaCloudImage)element;
+ switch (c) {
+ case NAME:
+ return i.getName();
+ case ID:
+ return i.getId();
+ case ARCH:
+ return i.getArchitecture();
+ case DESC:
+ return i.getDescription();
+ }
+ return "";
+ }
+
+}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceView.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceView.java 2010-08-17
14:46:11 UTC (rev 24216)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceView.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -141,6 +141,15 @@
};
@Override
+ public void dispose() {
+ for (DeltaCloud cloud : clouds) {
+ cloud.removeInstanceListListener(this);
+ }
+ DeltaCloudManager.getDefault().removeCloudManagerListener(this);
+ super.dispose();
+ }
+
+ @Override
public void createPartControl(Composite parent) {
container = new Composite(parent, SWT.NULL);
FormLayout layout = new FormLayout();
@@ -184,7 +193,7 @@
if (i == 0)
table.setSortColumn(tc);
tc.setText(CVMessages.getString(c.name()));
- tableLayout.setColumnData(tc, new ColumnWeightData(c.getWeight()));
+ tableLayout.setColumnData(tc, new ColumnWeightData(c.getWeight(), true));
tc.addSelectionListener(new ColumnListener(i, viewer));
}
table.setSortDirection(SWT.NONE);
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java 2010-08-17
14:46:11 UTC (rev 24216)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -101,6 +101,8 @@
String imageId = image.getId();
String profileId = mainPage.getHardwareProfile();
String realmId = mainPage.getRealmId();
+ String memory = mainPage.getMemoryProperty();
+ String storage = mainPage.getStorageProperty();
String name = null;
try {
name = URLEncoder.encode(mainPage.getInstanceName(), "UTF-8");
@@ -129,7 +131,7 @@
prefs.putBoolean(IDeltaCloudPreferenceConstants.DONT_CONFIRM_CREATE_INSTANCE,
true);
}
}
- instance = cloud.createInstance(name, imageId, realmId, profileId);
+ instance = cloud.createInstance(name, imageId, realmId, profileId, memory, storage);
if (instance != null)
result = true;
final String instanceId = instance.getId();
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ProfileComposite.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ProfileComposite.java 2010-08-17
14:46:11 UTC (rev 24216)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ProfileComposite.java 2010-08-17
17:19:21 UTC (rev 24217)
@@ -367,26 +367,14 @@
public String getMemory() {
if (memory != null && !memory.equals(memoryDefaultValue)) {
- String retVal = memory;
- if (memoryDecDigits > 0) {
- // Need to put back decimal point in returned value when we used the spinner
- retVal = retVal.substring(0, retVal.length() -
memoryDecDigits).concat(".").
- concat(memory.substring(memory.length() - memoryDecDigits));
- }
- return retVal;
+ return memory;
}
return null;
}
public String getStorage() {
if (storage != null && !storage.equals(storageDefaultValue)) {
- String retVal = storage;
- if (storageDecDigits > 0) {
- // Need to put back decimal point in returned value when we used the spinner
- retVal = retVal.substring(0, retVal.length() -
storageDecDigits).concat(".").
- concat(storage.substring(storage.length() - storageDecDigits));
- }
- return retVal;
+ return storage;
}
return null;
}