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