### Eclipse Workspace Patch 1.0 #P org.jboss.tools.deltacloud.core Index: src/org/jboss/tools/deltacloud/core/DeltaCloud.java =================================================================== --- src/org/jboss/tools/deltacloud/core/DeltaCloud.java (revision 29564) +++ src/org/jboss/tools/deltacloud/core/DeltaCloud.java (working copy) @@ -41,6 +41,8 @@ public static final String PROP_INSTANCES_REMOVED = "instancesRemoved"; public static final String PROP_IMAGES = "images"; public static final String PROP_NAME = "name"; + public static final String PROP_URL = "url"; + public static final String PROP_USERNAME = "username"; private String name; private String username; @@ -124,11 +126,11 @@ private boolean updateConnectionProperties(String url, String username, String password) throws DeltaCloudException { boolean changed = false; if (!equals(this.url, url)) { - this.url = url; + setUrl(url); changed = true; } if (!equals(this.username, username)) { - this.username = username; + setUsername(username); changed = true; } if (!equals(this.passwordStore.getPassword(), password)) { @@ -161,10 +163,18 @@ return name; } + private void setUrl(String url) { + firePropertyChange(PROP_URL, this.url, this.url = url); + } + public String getURL() { return url; } + private void setUsername(String username) { + firePropertyChange(PROP_USERNAME, this.username, this.username = username); + } + public String getUsername() { return username; } Index: src/org/jboss/tools/internal/deltacloud/core/observable/ObservablePojo.java =================================================================== --- src/org/jboss/tools/internal/deltacloud/core/observable/ObservablePojo.java (revision 29564) +++ src/org/jboss/tools/internal/deltacloud/core/observable/ObservablePojo.java (working copy) @@ -37,6 +37,10 @@ propertyChangeSupport.addPropertyChangeListener(propertyName, listener); } + public void addPropertyChangeListener(PropertyChangeListener listener) { + propertyChangeSupport.addPropertyChangeListener(listener); + } + public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(propertyName, listener); } #P org.jboss.tools.deltacloud.ui Index: src/org/jboss/tools/deltacloud/ui/views/cloud/property/CVPropertySheetPage.java =================================================================== --- src/org/jboss/tools/deltacloud/ui/views/cloud/property/CVPropertySheetPage.java (revision 29564) +++ src/org/jboss/tools/deltacloud/ui/views/cloud/property/CVPropertySheetPage.java (working copy) @@ -10,13 +10,61 @@ *******************************************************************************/ package org.jboss.tools.deltacloud.ui.views.cloud.property; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.views.properties.PropertySheetPage; +import org.jboss.tools.deltacloud.core.DeltaCloud; +import org.jboss.tools.deltacloud.ui.views.cloud.CloudItem; +import org.jboss.tools.internal.deltacloud.ui.utils.WorkbenchUtils; +/** + * @Jeff Johnston + * @author André Dietisheim + */ public class CVPropertySheetPage extends PropertySheetPage { - + + private DeltaCloud deltaCloud; + private PropertyChangeListener cloudPropertyListener = new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + refresh(); + } + }); + } + }; + public CVPropertySheetPage() { super(); setSorter(new CVPropertySheetNonSorter()); } + @Override + public void selectionChanged(IWorkbenchPart part, ISelection selection) { + CloudItem cloudItem = WorkbenchUtils.getFirstAdaptedElement(selection, CloudItem.class); + if (cloudItem != null) { + removePropertyChangeListener(this.deltaCloud); + DeltaCloud deltaCloud = cloudItem.getModel(); + if (deltaCloud != null) { + addPropertyChangeListener(deltaCloud); + this.deltaCloud = deltaCloud; + } + } + + super.selectionChanged(part, selection); + } + + private void addPropertyChangeListener(DeltaCloud deltaCloud) { + if (deltaCloud != null) { + deltaCloud.addPropertyChangeListener(cloudPropertyListener); + } + } + + private void removePropertyChangeListener(DeltaCloud deltaCloud) { + if (deltaCloud != null) { + deltaCloud.removePropertyChangeListener(cloudPropertyListener); + } + } + }