Author: adietish
Date: 2011-03-25 15:46:49 -0400 (Fri, 25 Mar 2011)
New Revision: 30048
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceFromSpecificImageHandler.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloud/cnf/CloudViewActionUtil.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePageModel.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstanceWizard.java
Log:
[JBIDE-8633] loading images and querying a particular image in the background now
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2011-03-25 18:46:38
UTC (rev 30047)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2011-03-25 19:46:49
UTC (rev 30048)
@@ -1,3 +1,20 @@
+2011-03-25 André Dietisheim <André Dietisheim@adietisheim-thinkpad>
+
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstanceWizard.java
+ (NewInstanceWizard):
+ (addPages):
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePageModel.java
+ (PROPERTY_IMAGE_ID):
+ (NewInstancePageModel):
+ (initImageId):
+ (setImageId):
+ (setImage):
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java
+ (NewInstancePage):
+ (bindImage):
+ * src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceFromSpecificImageHandler.java
(createInstance):
+ [JBIDE-8633] loading images and querying a particular image in the background now
+
2011-03-23 André Dietisheim <André Dietisheim@adietisheim-thinkpad>
* src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionPageModel.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceFromSpecificImageHandler.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceFromSpecificImageHandler.java 2011-03-25
18:46:38 UTC (rev 30047)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/commands/CreateInstanceFromSpecificImageHandler.java 2011-03-25
19:46:49 UTC (rev 30048)
@@ -45,7 +45,7 @@
private void createInstance(DeltaCloudImage deltaCloudImage, Shell shell) {
if (deltaCloudImage != null) {
DeltaCloud deltaCloud = deltaCloudImage.getDeltaCloud();
- IWizard wizard = new NewInstanceWizard(deltaCloud, deltaCloudImage);
+ IWizard wizard = new NewInstanceWizard(deltaCloud, deltaCloudImage.getId());
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/cloud/cnf/CloudViewActionUtil.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloud/cnf/CloudViewActionUtil.java 2011-03-25
18:46:38 UTC (rev 30047)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloud/cnf/CloudViewActionUtil.java 2011-03-25
19:46:49 UTC (rev 30048)
@@ -161,7 +161,7 @@
public static void showCreateInstanceWizard(Shell shell, ISelection selection) {
DeltaCloudImage deltaCloudImage = WorkbenchUtils.getFirstAdaptedElement(selection,
DeltaCloudImage.class);
DeltaCloud deltaCloud = WorkbenchUtils.getFirstAdaptedElement(selection,
DeltaCloud.class);
- IWizard wizard = new NewInstanceWizard(deltaCloud, deltaCloudImage);
+ IWizard wizard = new NewInstanceWizard(deltaCloud, deltaCloudImage.getId());
WizardDialog dialog = new WizardDialog(shell, wizard);
dialog.create();
dialog.open();
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java 2011-03-25
18:46:38 UTC (rev 30047)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java 2011-03-25
19:46:49 UTC (rev 30048)
@@ -31,7 +31,6 @@
import org.eclipse.core.databinding.observable.IObservable;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.WritableValue;
import org.eclipse.core.databinding.validation.IValidator;
import org.eclipse.core.databinding.validation.ValidationStatus;
import org.eclipse.core.runtime.Assert;
@@ -106,7 +105,6 @@
private static final String PROPERTIES_LABEL = "Properties.label";
//$NON-NLS-1$
private static final String MUST_ENTER_A_NAME = "ErrorMustProvideName.text";
//$NON-NLS-1$
private static final String MUST_ENTER_A_KEYNAME =
"ErrorMustProvideKeyName.text"; //$NON-NLS-1$
- private static final String MUST_ENTER_IMAGE_ID =
"ErrorMustProvideImageId.text"; //$NON-NLS-1$
private static final String LOADING_VALUE = "Loading.value"; //$NON-NLS-1$
private static final String IMAGE_ID_NOT_FOUND = "ErrorImageIdNotFound.text";
//$NON-NLS-1$
private static final String SHOW_SSH2_PREFS = "ShowSSH2Preferences.label";
//$NON-NLS-1$
@@ -122,7 +120,6 @@
private Combo hardwareCombo;
private Map<String, ProfilePage> profilePages = new HashMap<String,
ProfilePage>();
private StackLayout groupContainerStackLayout;
-
private Group groupContainer;
private SelectionListener manageListener = new SelectionAdapter() {
@@ -156,11 +153,11 @@
}
};
- public NewInstancePage(DeltaCloud cloud, DeltaCloudImage image) {
+ public NewInstancePage(DeltaCloud cloud, String imageId) {
super(WizardMessages.getString(NAME));
this.cloud = cloud;
String defaultKeyname = cloud.getLastKeyname();
- model = new NewInstancePageModel(defaultKeyname, image, cloud); //$NON-NLS-1$
+ model = new NewInstancePageModel(defaultKeyname, imageId, cloud); //$NON-NLS-1$
setDescription(WizardMessages.getString(DESCRIPTION));
setTitle(WizardMessages.getString(TITLE));
setImageDescriptor(SWTImagesFactory.DESC_DELTA_LARGE);
@@ -495,56 +492,26 @@
}
private IObservableValue bindImage(Text imageText, DataBindingContext dbc) {
- UpdateValueStrategy widgetToModelUpdateStrategy = new UpdateValueStrategy();
- ImageLabel2DeltaCloudImageConverter imageConverter = new
ImageLabel2DeltaCloudImageConverter();
- widgetToModelUpdateStrategy.setConverter(imageConverter);
- widgetToModelUpdateStrategy.setAfterGetValidator(
- new MandatoryStringValidator(WizardMessages.getString(MUST_ENTER_IMAGE_ID)));
- widgetToModelUpdateStrategy.setAfterConvertValidator(new DeltaCloudImageValidator());
+ IObservableValue imageTextObservable =
WidgetProperties.text(SWT.Modify).observeDelayed(IMAGE_CHECK_DELAY,
+ imageText);
- UpdateValueStrategy modelToTextUpdateStrategy = new UpdateValueStrategy();
- modelToTextUpdateStrategy.setConverter(new DeltaCloudImage2LabelConverter());
+ dbc.bindValue(
+ imageTextObservable,
+ BeanProperties.value(
+ NewInstancePageModel.class,
NewInstancePageModel.PROPERTY_IMAGE_ID).observe(model));
- Binding imageBinding = dbc.bindValue(
- WidgetProperties.text(SWT.Modify).observeDelayed(IMAGE_CHECK_DELAY, imageText),
- BeanProperties.value(NewInstancePageModel.class,
NewInstancePageModel.PROPERTY_IMAGE).observe(model),
- widgetToModelUpdateStrategy,
- modelToTextUpdateStrategy);
- ControlDecorationSupport.create(imageBinding, SWT.LEFT | SWT.TOP);
- return imageConverter.getImageObservable();
- }
+ IObservableValue modelImageObservable =
+ BeanProperties.value(NewInstancePageModel.PROPERTY_IMAGE).observe(model);
+ Binding modelImageBinding = dbc.bindValue(
+ imageTextObservable,
+ modelImageObservable,
+ new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
+ new UpdateValueStrategy()
+ .setAfterGetValidator(new DeltaCloudImageValidator())
+ .setConverter(new DeltaCloudImage2LabelConverter()));
- private class ImageLabel2DeltaCloudImageConverter extends Converter {
-
- private WritableValue imageObservable = new WritableValue();
-
- public ImageLabel2DeltaCloudImageConverter() {
- super(String.class, DeltaCloudImage.class);
- }
-
- @Override
- public Object convert(Object fromObject) {
- Assert.isLegal(fromObject instanceof String);
- String id = (String) fromObject;
- DeltaCloudImage image = null;
- if (id != null) {
- image = getImage(id);
- }
- imageObservable.setValue(image);
- return image;
- }
-
- private DeltaCloudImage getImage(String id) {
- try {
- return cloud.getImage(id);
- } catch (DeltaCloudException e) {
- return null;
- }
- }
-
- public IObservableValue getImageObservable() {
- return imageObservable;
- }
+ ControlDecorationSupport.create(modelImageBinding, SWT.LEFT | SWT.TOP);
+ return modelImageObservable;
}
private class DeltaCloudImage2LabelConverter extends Converter {
@@ -581,7 +548,6 @@
}
private void asyncGetProfiles(final NewInstancePageModel model, final DeltaCloud cloud)
{
- // TODO: internationalize strings
new AbstractCloudElementJob("Get profiles", cloud, CLOUDELEMENT.PROFILES) {
protected IStatus doRun(IProgressMonitor monitor) throws Exception {
try {
@@ -589,7 +555,6 @@
model.setAllProfiles(profiles);
return Status.OK_STATUS;
} catch (DeltaCloudException e) {
- // TODO: internationalize strings
return StatusFactory.getInstance(IStatus.ERROR, Activator.PLUGIN_ID,
MessageFormat.format("Could not get profiles from cloud {0}",
cloud.getName()));
}
@@ -598,7 +563,6 @@
}
private void asyncGetRealms(final NewInstancePageModel model, final DeltaCloud cloud) {
- // TODO: internationalize strings
new AbstractCloudElementJob("Get realms", cloud, CLOUDELEMENT.REALMS) {
protected IStatus doRun(IProgressMonitor monitor) throws Exception {
try {
@@ -614,5 +578,4 @@
}
}.schedule();
}
-
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePageModel.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePageModel.java 2011-03-25
18:46:38 UTC (rev 30047)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePageModel.java 2011-03-25
19:46:49 UTC (rev 30048)
@@ -10,14 +10,21 @@
******************************************************************************/
package org.jboss.tools.internal.deltacloud.ui.wizards;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.swt.widgets.Display;
import org.jboss.tools.deltacloud.core.DeltaCloud;
import org.jboss.tools.deltacloud.core.DeltaCloudHardwareProfile;
import org.jboss.tools.deltacloud.core.DeltaCloudImage;
import org.jboss.tools.deltacloud.core.DeltaCloudRealm;
+import org.jboss.tools.deltacloud.core.job.AbstractCloudElementJob;
+import org.jboss.tools.deltacloud.core.job.AbstractCloudElementJob.CLOUDELEMENT;
import
org.jboss.tools.internal.deltacloud.ui.common.databinding.validator.ObservableUIPojo;
/**
@@ -29,6 +36,7 @@
public static final String PROPERTY_URL = "url"; //$NON-NLS-1$
public static final String PROPERTY_NAME = "name"; //$NON-NLS-1$
public static final String PROPERTY_IMAGE = "image"; //$NON-NLS-1$
+ public static final String PROPERTY_IMAGE_ID = "imageId"; //$NON-NLS-1$
public static final String PROPERTY_ARCH = "arch"; //$NON-NLS-1$
public static final String PROPERTY_REALMS = "realms"; //$NON-NLS-1$
public static final String PROPERTY_SELECTED_REALM_INDEX =
"selectedRealmIndex"; //$NON-NLS-1$
@@ -51,13 +59,21 @@
private String storage;
private String memory;
private DeltaCloud cloud;
+ private String imageId;
- protected NewInstancePageModel(String keyId, DeltaCloudImage image, DeltaCloud cloud) {
+ protected NewInstancePageModel(String keyId, String imageId, DeltaCloud cloud) {
this.cloud = cloud;
this.keyId = keyId;
- this.image = image;
+ initImageId(imageId, cloud);
}
+ private void initImageId(String imageId, DeltaCloud cloud) {
+ if (imageId == null) {
+ imageId = cloud.getLastImageId();
+ }
+ setImageId(imageId);
+ }
+
public String getName() {
return name;
}
@@ -74,9 +90,47 @@
firePropertyChange(PROPERTY_IMAGE, this.image, this.image = image);
List<DeltaCloudHardwareProfile> filteredProfiles = filterProfiles(image,
allProfiles);
setFilteredProfiles(filteredProfiles);
- setArch(image.getArchitecture());
+ if (image != null) {
+ setArch(image.getArchitecture());
+ }
}
+ public String getImageId() {
+ return imageId;
+ }
+
+ public void setImageId(final String imageId) {
+ firePropertyChange(PROPERTY_IMAGE_ID, this.imageId, this.imageId = imageId);
+ if (imageId == null || imageId.length() == 0) {
+ return;
+ }
+
+ new AbstractCloudElementJob(
+ MessageFormat.format("Getting image {0} from cloud {1}", imageId,
cloud.getName()),
+ cloud, CLOUDELEMENT.IMAGES) {
+
+ @Override
+ protected IStatus doRun(IProgressMonitor monitor) throws Exception {
+ try {
+ final DeltaCloudImage image = cloud.getImage(imageId);
+ Display.getDefault().syncExec(new Runnable() {
+
+ @Override
+ public void run() {
+ setImage(image);
+ }
+ });
+ } catch (Exception e) {
+ setImage(null);
+ // do not re-throw exception. DC server 0.1.2 return internal
+ // error 500 when requesting unknown image
+ }
+ return Status.OK_STATUS;
+ }
+
+ }.schedule();
+ }
+
public int getSelectedRealmIndex() {
return realms.indexOf(selectedRealm);
}
@@ -173,7 +227,7 @@
private int getProfileIndex(String selectedProfileId) {
int index = 0;
- if (selectedProfileId != null
+ if (selectedProfileId != null
&& filteredProfiles != null && filteredProfiles.size() > 0) {
for (int i = 0; i < filteredProfiles.size(); i++) {
if (selectedProfileId.equals(filteredProfiles.get(i).getId())) {
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstanceWizard.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstanceWizard.java 2011-03-25
18:46:38 UTC (rev 30047)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstanceWizard.java 2011-03-25
19:46:49 UTC (rev 30048)
@@ -43,26 +43,21 @@
/**
* Initial image, may be null
*/
- private DeltaCloudImage image;
+ private String imageId;
public NewInstanceWizard(DeltaCloud cloud) {
super(cloud);
- try {
- this.image = cloud.getLastImage();
- } catch (DeltaCloudException e) {
- // ignore
- }
}
- public NewInstanceWizard(DeltaCloud cloud, DeltaCloudImage image) {
+ public NewInstanceWizard(DeltaCloud cloud, String imageId) {
this(cloud);
- this.image = image;
+ this.imageId = imageId;
}
@Override
public void addPages() {
setWindowTitle(WizardMessages.getString("NewInstance.title"));
- mainPage = new NewInstancePage(getDeltaCloud(), image);
+ mainPage = new NewInstancePage(getDeltaCloud(), imageId);
addPage(mainPage);
additionalPages =
DeltacloudUIExtensionManager.getDefault().loadNewInstanceWizardPages();
for (int i = 0; i < additionalPages.length; i++) {
@@ -70,12 +65,6 @@
}
}
- // @Override
- // public boolean canFinish() {
- // //return mainPage.isPageComplete();
- // return super.canFinish();
- // }
-
@Override
public boolean performFinish() {
NewInstancePageModel model = mainPage.getModel();