[jbosstools-commits] JBoss Tools SVN: r35339 - in trunk/as/plugins: org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/internal and 1 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Tue Oct 4 18:18:42 EDT 2011


Author: adietish
Date: 2011-10-04 18:18:41 -0400 (Tue, 04 Oct 2011)
New Revision: 35339

Modified:
   trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IUser.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/internal/InternalUser.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/ApplicationWizardPage.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationDialog.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPage.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPageModel.java
Log:
[JBIDE-9793] implementing Application page (selection, create new, delete selected, etc.)

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IUser.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IUser.java	2011-10-04 21:59:49 UTC (rev 35338)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IUser.java	2011-10-04 22:18:41 UTC (rev 35339)
@@ -44,6 +44,8 @@
 
 	public Collection<ICartridge> getCartridges() throws OpenshiftException;
 
+	public ICartridge getCartridgeByName(String name) throws OpenshiftException;
+
 	public IApplication createApplication(String name, ICartridge cartridge) throws OpenshiftException;
 
 	public Collection<IApplication> getApplications() throws OpenshiftException;

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/internal/InternalUser.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/internal/InternalUser.java	2011-10-04 21:59:49 UTC (rev 35338)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/internal/InternalUser.java	2011-10-04 22:18:41 UTC (rev 35339)
@@ -142,6 +142,18 @@
 	}
 
 	@Override
+	public ICartridge getCartridgeByName(String name) throws OpenshiftException {
+		ICartridge matchingCartridge = null;
+		for(ICartridge cartridge : getCartridges()) {
+			if (name.equals(cartridge.getName())) {
+				matchingCartridge = cartridge;
+				break;
+			}
+		}
+		return matchingCartridge;
+	}
+	
+	@Override
 	public IApplication createApplication(String name, ICartridge cartridge) throws OpenshiftException {
 		IApplication application = service.createApplication(name, cartridge, this);
 		add(application);

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/ApplicationWizardPage.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/ApplicationWizardPage.java	2011-10-04 21:59:49 UTC (rev 35338)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/ApplicationWizardPage.java	2011-10-04 22:18:41 UTC (rev 35339)
@@ -105,12 +105,12 @@
 				null);
 
 		Button newButton = new Button(container, SWT.PUSH);
-		newButton.setText("New");
+		newButton.setText("Ne&w");
 		GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(newButton);
 		newButton.addSelectionListener(onNew(dbc));
 
 		Button deleteButton = new Button(container, SWT.PUSH);
-		deleteButton.setText("Delete");
+		deleteButton.setText("&Delete");
 		GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(deleteButton);
 		DataBindingUtils.bindButtonEnablementToValidationStatus(deleteButton, dbc, selectedApplicationBinding);
 		deleteButton.addSelectionListener(onDelete(dbc));

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationDialog.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationDialog.java	2011-10-04 21:59:49 UTC (rev 35338)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationDialog.java	2011-10-04 22:18:41 UTC (rev 35339)
@@ -10,28 +10,58 @@
  ******************************************************************************/
 package org.jboss.ide.eclipse.as.openshift.ui.internal.wizard;
 
+import java.util.concurrent.ArrayBlockingQueue;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osgi.util.NLS;
 import org.jboss.ide.eclipse.as.openshift.core.IUser;
+import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
+import org.jboss.ide.eclipse.as.openshift.ui.internal.OpenshiftUIActivator;
+import org.jboss.tools.common.ui.WizardUtils;
 
 /**
  * @author André Dietisheim
  */
 public class NewApplicationDialog extends Wizard {
 
-	private IUser user;
+	private NewApplicationWizardPageModel newApplicationModel;
 
 	public NewApplicationDialog(IUser user) {
-		this.user = user;
+		this.newApplicationModel = new NewApplicationWizardPageModel(user);
 		setNeedsProgressMonitor(true);
 	}
 
 	@Override
 	public boolean performFinish() {
-		return true;
+		final ArrayBlockingQueue<Boolean> queue = new ArrayBlockingQueue<Boolean>(1);
+		try {
+			WizardUtils.runInWizard(new Job("Creating application") {
+
+				@Override
+				protected IStatus run(IProgressMonitor monitor) {
+					try {
+						newApplicationModel.createApplication();
+						queue.offer(true);
+					} catch (OpenshiftException e) {
+						queue.offer(false);
+						return new Status(IStatus.ERROR, OpenshiftUIActivator.PLUGIN_ID,
+								NLS.bind("Could not create application \"{0}\"", newApplicationModel.getName()), e);
+					}
+					return Status.OK_STATUS;
+				}
+			}, getContainer());
+		} catch (Exception e) {
+			// ignore
+		}
+		return queue.poll();
 	}
 
 	@Override
 	public void addPages() {
-		addPage(new NewApplicationWizardPage(new NewApplicationWizardPageModel(user), this));
+		addPage(new NewApplicationWizardPage(newApplicationModel, this));
 	}
 }

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPage.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPage.java	2011-10-04 21:59:49 UTC (rev 35338)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPage.java	2011-10-04 22:18:41 UTC (rev 35339)
@@ -10,20 +10,30 @@
  ******************************************************************************/
 package org.jboss.ide.eclipse.as.openshift.ui.internal.wizard;
 
+import org.eclipse.core.databinding.Binding;
 import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.UpdateListStrategy;
+import org.eclipse.core.databinding.UpdateValueStrategy;
+import org.eclipse.core.databinding.beans.BeanProperties;
+import org.eclipse.core.databinding.conversion.Converter;
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.databinding.validation.ValidationStatus;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.databinding.fieldassist.ControlDecorationSupport;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
+import org.jboss.ide.eclipse.as.openshift.core.ICartridge;
 import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
 import org.jboss.ide.eclipse.as.openshift.ui.internal.OpenshiftUIActivator;
 import org.jboss.tools.common.ui.WizardUtils;
@@ -33,8 +43,6 @@
  */
 public class NewApplicationWizardPage extends AbstractOpenshiftWizardPage {
 
-	private static final int NAME_MAXLENGTH = 13;
-
 	private NewApplicationWizardPageModel model;
 
 	public NewApplicationWizardPage(NewApplicationWizardPageModel model, IWizard wizard) {
@@ -48,22 +56,45 @@
 		GridLayoutFactory.fillDefaults().numColumns(2).margins(10, 10).applyTo(parent);
 
 		Label nameLabel = new Label(parent, SWT.NONE);
-		nameLabel.setText("Name");
+		nameLabel.setText("Na&me");
 		GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(nameLabel);
 		Text nameText = new Text(parent, SWT.BORDER);
+		nameText.setTextLimit(13);
 		GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(nameText);
+		Binding nameBinding = dbc.bindValue(
+				WidgetProperties.text().observe(nameText)
+				, BeanProperties.value(NewApplicationWizardPageModel.PROPERTY_NAME).observe(model)
+				, new UpdateValueStrategy().setAfterGetValidator(new ApplicationNameValidator())
+				, null);
+		ControlDecorationSupport.create(nameBinding, SWT.LEFT | SWT.TOP);
 
 		Label cartridgeLabel = new Label(parent, SWT.WRAP);
-		cartridgeLabel.setText("Cartridge");
+		cartridgeLabel.setText("&Cartridge");
 		GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(cartridgeLabel);
-		Combo cartridgesCombo = new Combo(parent, SWT.BORDER);
+		Combo cartridgesCombo = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
+		dbc.bindList(
+				WidgetProperties.items().observe(cartridgesCombo)
+				, BeanProperties.list(NewApplicationWizardPageModel.PROPERTY_CARTRIDGES).observe(model)
+				, new UpdateListStrategy(UpdateListStrategy.POLICY_NEVER)
+				, new UpdateListStrategy().setConverter(new Converter(Object.class, String.class) {
+
+					@Override
+					public Object convert(Object fromObject) {
+						if (!(fromObject instanceof ICartridge)) {
+							return null;
+						}
+						return ((ICartridge) fromObject).getName();
+					}
+				}));
+		dbc.bindValue(WidgetProperties.selection().observe(cartridgesCombo)
+				, BeanProperties.value(NewApplicationWizardPageModel.PROPERTY_SELECTED_CARTRIDGE).observe(model));
 		GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(cartridgesCombo);
 	}
 
 	@Override
 	protected void onPageActivated(DataBindingContext dbc) {
 		try {
-			WizardUtils.runInWizard(new Job("Load cartridges") {
+			WizardUtils.runInWizard(new Job("Loading cartridges") {
 
 				@Override
 				protected IStatus run(IProgressMonitor monitor) {
@@ -80,17 +111,18 @@
 		}
 	}
 
-	private final class ApplicationNameValidator implements IInputValidator {
+	private class ApplicationNameValidator implements IValidator {
 
 		@Override
-		public String isValid(String newText) {
-			if (newText.length() > 0
-					&& newText.length() <= NAME_MAXLENGTH) {
-				return null;
-			} else {
-				return "you have to provide a valid application name with less than 13 characters";
+		public IStatus validate(Object value) {
+			String name = (String) value;
+			if (name.length() == 0) {
+				return ValidationStatus.error("You have to provide a name");
+			} else if (model.hasApplication(name)) {
+				return ValidationStatus.error(NLS.bind(
+						"Names must be unique. You already have an application named \"{0}\"", name));
 			}
+			return ValidationStatus.ok();
 		}
-	};
-
+	}
 }
\ No newline at end of file

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPageModel.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPageModel.java	2011-10-04 21:59:49 UTC (rev 35338)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.ui/src/org/jboss/ide/eclipse/as/openshift/ui/internal/wizard/NewApplicationWizardPageModel.java	2011-10-04 22:18:41 UTC (rev 35339)
@@ -15,22 +15,50 @@
 import org.jboss.ide.eclipse.as.openshift.core.ICartridge;
 import org.jboss.ide.eclipse.as.openshift.core.IUser;
 import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
+import org.jboss.ide.eclipse.as.openshift.ui.internal.OpenshiftUIActivator;
 import org.jboss.tools.common.ui.databinding.ObservableUIPojo;
+import org.jboss.tools.common.ui.preferencevalue.StringPreferenceValue;
 
 /**
  * @author André Dietisheim
  */
 public class NewApplicationWizardPageModel extends ObservableUIPojo {
 
-	private static final String PROPERTY_CARTRIDGES = "cartridges";
+	public static final String PROPERTY_NAME = "name";
+	public static final String PROPERTY_CARTRIDGES = "cartridges";
+	public static final String PROPERTY_SELECTED_CARTRIDGE = "selectedCartridge";
+
+	private IUser user;
+	private String name;
 	
-	private IUser user;
 	private Collection<ICartridge> cartridges;
-	
+	private String selectedCartridge;
+	private StringPreferenceValue selectedCartridgePreference;
+
 	public NewApplicationWizardPageModel(IUser user) {
 		this.user = user;
+		this.selectedCartridgePreference = new StringPreferenceValue(
+				"org.jboss.ide.eclipse.as.openshift.ui.internal.wizard.NewApplicationWizard.selectedCartridge", OpenshiftUIActivator.PLUGIN_ID);
+		initSelectedCartridge();
 	}
 
+	private void initSelectedCartridge() {
+		String selectedCartridge = selectedCartridgePreference.get();
+		if (selectedCartridge == null
+				|| selectedCartridge.length() == 0) {
+			selectedCartridge = ICartridge.JBOSSAS_7.getName();
+		}
+		this.selectedCartridge = selectedCartridge;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		firePropertyChange(PROPERTY_NAME, this.name, this.name = name);
+	}
+
 	public void loadCartridges() throws OpenshiftException {
 		setCartridges(user.getCartridges());
 	}
@@ -38,4 +66,32 @@
 	public void setCartridges(Collection<ICartridge> cartridges) {
 		firePropertyChange(PROPERTY_CARTRIDGES, this.cartridges, this.cartridges = cartridges);
 	}
+
+	public Collection<ICartridge> getCartridges() {
+		return cartridges;
+	}
+
+	public String getSelectedCartridge() {
+		return selectedCartridge;
+	}
+
+	public void setSelectedCartridge(String name) {
+		selectedCartridgePreference.store(name);
+		firePropertyChange(PROPERTY_SELECTED_CARTRIDGE, selectedCartridge, this.selectedCartridge = name);
+	}
+
+	public void createApplication() throws OpenshiftException {
+		user.createApplication(name, user.getCartridgeByName(selectedCartridge));
+	}
+
+	public boolean hasApplication(String name) {
+		try {
+			return user.getApplicationByName(name) != null;
+		} catch (OpenshiftException e) {
+			// TODO proper logging
+			return false;
+		}
+	}
+	
+	
 }



More information about the jbosstools-commits mailing list