[jbosstools-commits] JBoss Tools SVN: r24217 - in trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui: src/org/jboss/tools/deltacloud/ui/views and 1 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Tue Aug 17 13:19:22 EDT 2010


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 at 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 at 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 at 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;
 	}



More information about the jbosstools-commits mailing list