Author: jjohnstn
Date: 2010-09-01 20:14:10 -0400 (Wed, 01 Sep 2010)
New Revision: 24634
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CustomWizardDialog.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeys.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeysPage.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/IDeltaCloudPreferenceConstants.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/NewInstancePage.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties
Log:
2010-09-01 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/internal/deltacloud/ui/wizards/CustomWizardDialog.java: New file.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeys.java: New file.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeysPage.java: New file.
* src/org/jboss/tools/deltacloud/ui/IDeltaCloudPreferenceConstants.java: Add a constant
for default key directory.
* src/org/jboss/tools/deltacloud/ui/views/InstanceView.java (..run): Fix to
getInstances,
not getImages.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java
(.widgetSelected):
Open ManageKeysDialog when Manage button is pressed.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties: Add new
messages.
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-09-02 00:12:04
UTC (rev 24633)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-09-02 00:14:10
UTC (rev 24634)
@@ -1,3 +1,17 @@
+2010-09-01 Jeff Johnston <jjohnstn(a)redhat.com>
+
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/CustomWizardDialog.java: New file.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeys.java: New file.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeysPage.java: New file.
+ * src/org/jboss/tools/deltacloud/ui/IDeltaCloudPreferenceConstants.java: Add a constant
+ for default key directory.
+ * src/org/jboss/tools/deltacloud/ui/views/InstanceView.java (..run): Fix to
getInstances,
+ not getImages.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java
(.widgetSelected):
+ Open ManageKeysDialog when Manage button is pressed.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties: Add new
+ messages.
+
2010-08-30 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/deltacloud/ui/Activator.java: Add Copyright and License info.
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/IDeltaCloudPreferenceConstants.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/IDeltaCloudPreferenceConstants.java 2010-09-02
00:12:04 UTC (rev 24633)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/IDeltaCloudPreferenceConstants.java 2010-09-02
00:14:10 UTC (rev 24634)
@@ -14,5 +14,6 @@
public final static String DONT_CONFIRM_CREATE_INSTANCE =
"dont_confirm_create_instance"; //$NON-NLS-1$
public final static String LAST_EC2_KEYNAME = "last_ec2_keyname";
//$NON-NLS-1$
+ public final static String DEFAULT_KEY_DIR = "default_key_directory";
//$NON-NLS-1$
}
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-09-02
00:12:04 UTC (rev 24633)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceView.java 2010-09-02
00:14:10 UTC (rev 24634)
@@ -411,7 +411,7 @@
@Override
public void run() {
if (currCloud != null) {
- currCloud.getImages();
+ currCloud.getInstances();
}
}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CustomWizardDialog.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CustomWizardDialog.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CustomWizardDialog.java 2010-09-02
00:14:10 UTC (rev 24634)
@@ -0,0 +1,27 @@
+package org.jboss.tools.internal.deltacloud.ui.wizards;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+public class CustomWizardDialog extends WizardDialog {
+
+ private String finishText;
+
+ public CustomWizardDialog(Shell parentShell, IWizard newWizard, String finishText) {
+ super(parentShell, newWizard);
+ this.finishText = finishText;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ // All we want to do is override the text for the finish button
+ Button finishButton = getButton(IDialogConstants.FINISH_ID);
+ finishButton.setText(finishText);
+ }
+
+}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeys.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeys.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeys.java 2010-09-02
00:14:10 UTC (rev 24634)
@@ -0,0 +1,43 @@
+package org.jboss.tools.internal.deltacloud.ui.wizards;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.jboss.tools.deltacloud.core.DeltaCloud;
+
+public class ManageKeys extends Wizard {
+
+ private DeltaCloud cloud;
+ private String fileExtension;
+ private ManageKeysPage mainPage;
+ private String keyname;
+
+ public ManageKeys(DeltaCloud cloud, String fileExtension) {
+ this.cloud = cloud;
+ this.fileExtension = fileExtension;
+ }
+
+ public String getKeyName() {
+ return keyname;
+ }
+
+ @Override
+ public void addPages() {
+ // TODO Auto-generated method stub
+ mainPage = new ManageKeysPage(cloud, fileExtension);
+ addPage(mainPage);
+ }
+
+ @Override
+ public boolean canFinish() {
+ return mainPage.isPageComplete();
+ }
+
+ @Override
+ public boolean performFinish() {
+ String currFile = mainPage.getCurrFile();
+ keyname = currFile.substring(0,
+ currFile.length() - fileExtension.length());
+ // TODO Auto-generated method stub
+ return true;
+ }
+
+}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeysPage.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeysPage.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/ManageKeysPage.java 2010-09-02
00:14:10 UTC (rev 24634)
@@ -0,0 +1,275 @@
+package org.jboss.tools.internal.deltacloud.ui.wizards;
+
+import java.io.File;
+import java.io.FilenameFilter;
+
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.WizardPage;
+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.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.jboss.tools.deltacloud.core.DeltaCloud;
+import org.jboss.tools.deltacloud.core.DeltaCloudException;
+import org.jboss.tools.deltacloud.ui.Activator;
+import org.jboss.tools.deltacloud.ui.IDeltaCloudPreferenceConstants;
+import org.jboss.tools.deltacloud.ui.SWTImagesFactory;
+import org.osgi.service.prefs.Preferences;
+
+public class ManageKeysPage extends WizardPage {
+
+ private final static String NAME = "ManageKeys.name"; //$NON-NLS-1$
+ private final static String TITLE = "ManageKeys.title"; //$NON-NLS-1$
+ private final static String DESC = "ManageKeys.desc"; //$NON-NLS-1$
+ private final static String DIR_LABEL = "Directory.label"; //$NON-NLS-1$
+ private final static String BROWSE_LABEL = "BrowseButton.label";
//$NON-NLS-1$
+ private final static String NEW = "NewButton.label"; //$NON-NLS-1$
+ private final static String DELETE = "DeleteButton.label"; //$NON-NLS-1$
+ private final static String CREATE_KEY_TITLE = "CreateKey.title";
//$NON-NLS-1$
+ private final static String CREATE_KEY_MSG = "CreateKey.msg"; //$NON-NLS-1$
+ private final static String CONFIRM_KEY_DELETE_TITLE =
"ConfirmKeyDelete.title"; //$NON-NLS-1$
+ private final static String CONFIRM_KEY_DELETE_MSG = "ConfirmKeyDelete.msg";
//$NON-NLS-1$
+
+ private final static String INVALID_DIRECTORY = "ErrorInvalidDirectory.text";
//$NON-NLS-1$
+
+ private DeltaCloud cloud;
+ private String fileExtension;
+ private String currFile;
+
+ private Text directory;
+ private List fileList;
+
+ private ModifyListener dirListener = new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ // TODO Auto-generated method stub
+ validate();
+ }
+
+ };
+
+ private SelectionListener browseButtonListener = new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Display display = Display.getDefault();
+ Shell shell = new Shell(display);
+ DirectoryDialog d = new DirectoryDialog(shell);
+ String text = d.open();
+ if (text != null)
+ directory.setText(text);
+ }
+
+ };
+
+ private SelectionListener createButtonListener = new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Display display = Display.getDefault();
+ Shell shell = new Shell(display);
+ String directoryText = directory.getText();
+ InputDialog d = new InputDialog(shell, WizardMessages.getString(CREATE_KEY_TITLE),
+ WizardMessages.getString(CREATE_KEY_MSG),
+ "",
+ null);
+ d.setBlockOnOpen(true);
+ d.create();
+ int retcode = d.open();
+ if (retcode == InputDialog.OK) {
+ String keyname = d.getValue();
+ try {
+ cloud.createKey(keyname, directoryText);
+ loadFileList();
+ } catch (DeltaCloudException dce) {
+ MessageDialog.openError(getShell(), null, dce.getLocalizedMessage());
+ }
+ }
+ }
+
+ };
+
+ private SelectionListener fileListListener = new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ currFile = fileList.getSelection()[0];
+ }
+
+ };
+
+ private FilenameFilter extensionFilter = new FilenameFilter() {
+
+ @Override
+ public boolean accept(File arg0, String arg1) {
+ if (arg1.endsWith(fileExtension))
+ return true;
+ return false;
+ }
+
+ };
+
+ public ManageKeysPage(DeltaCloud cloud, String fileExtension) {
+ super(WizardMessages.getString(NAME));
+ this.cloud = cloud;
+ this.fileExtension = fileExtension;
+ setDescription(WizardMessages.getString(DESC));
+ setTitle(WizardMessages.getString(TITLE));
+ setImageDescriptor(SWTImagesFactory.DESC_DELTA_LARGE);
+ setPageComplete(false);
+ }
+
+ public String getCurrFile() {
+ return currFile;
+ }
+
+ private void validate() {
+ boolean hasError = false;
+ boolean isComplete = true;
+
+ if (directory.getText().length() == 0)
+ isComplete = false;
+ else {
+ File f = new File(directory.getText());
+ if (!f.exists() || !f.isDirectory()) {
+ hasError = true;
+ setErrorMessage(WizardMessages.getString(INVALID_DIRECTORY));
+ } else {
+ loadFileList();
+ }
+ }
+ if (!hasError)
+ setErrorMessage(null);
+ setPageComplete(isComplete && !hasError);
+ }
+
+ private void loadFileList() {
+ File dir = new File(directory.getText());
+ if (dir.exists() && dir.isDirectory()) {
+ File[] files = dir.listFiles(extensionFilter);
+ fileList.removeAll();
+ for (File f : files) {
+ fileList.add(f.getName());
+ }
+ }
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ // TODO Auto-generated method stub
+ final Composite container = new Composite(parent, SWT.NULL);
+ FormLayout layout = new FormLayout();
+ layout.marginHeight = 5;
+ layout.marginWidth = 5;
+ container.setLayout(layout);
+
+ Label dirLabel = new Label(container, SWT.NULL);
+ dirLabel.setText(WizardMessages.getString(DIR_LABEL));
+
+ directory = new Text(container, SWT.BORDER | SWT.SINGLE);
+ Preferences prefs = new InstanceScope().getNode(Activator.PLUGIN_ID);
+ String defaultDir = prefs.get(IDeltaCloudPreferenceConstants.DEFAULT_KEY_DIR,
System.getProperty("user.home"));
+ directory.setText(defaultDir);
+ directory.addModifyListener(dirListener);
+
+ Button browseButton = new Button(container, SWT.NULL);
+ browseButton.setText(WizardMessages.getString(BROWSE_LABEL));
+ browseButton.addSelectionListener(browseButtonListener);
+
+ fileList = new List(container, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
+ fileList.addSelectionListener(fileListListener);
+
+ Button createButton = new Button(container, SWT.NULL);
+ createButton.setText(WizardMessages.getString(NEW));
+ createButton.addSelectionListener(createButtonListener);
+
+ Button deleteButton = new Button(container, SWT.NULL);
+ deleteButton.setText(WizardMessages.getString(DELETE));
+ deleteButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ final String keyName = fileList.getSelection()[0];
+ boolean confirmed = MessageDialog.openConfirm(getShell(),
+ WizardMessages.getString(CONFIRM_KEY_DELETE_TITLE),
+ WizardMessages.getFormattedString(CONFIRM_KEY_DELETE_MSG, keyName));
+ if (confirmed) {
+ try {
+ cloud.deleteKey(keyName.substring(0, keyName.length() - fileExtension.length()));
+ File f = new File(directory.getText());
+ File[] files = f.listFiles(new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String name) {
+ return name.equals(keyName);
+ }
+ });
+ if (files.length == 1) {
+ if (files[0].delete())
+ fileList.remove(fileList.getSelectionIndex());
+ }
+ } catch (DeltaCloudException dce) {
+ MessageDialog.openError(getShell(), null, dce.getLocalizedMessage());
+ }
+ }
+ }
+ });
+
+ FormData f = new FormData();
+ f.left = new FormAttachment(0, 5);
+ f.top = new FormAttachment(0, 8);
+ dirLabel.setLayoutData(f);
+
+ f = new FormData();
+ f.right = new FormAttachment(100, -10);
+ f.top = new FormAttachment(0, 5);
+ browseButton.setLayoutData(f);
+
+ f = new FormData();
+ f.left = new FormAttachment(dirLabel, 5);
+ f.top = new FormAttachment(0, 5);
+ f.right = new FormAttachment(browseButton, -10);
+ directory.setLayoutData(f);
+
+ f = new FormData();
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ Point minSize = deleteButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+ f.width = Math.max(widthHint, minSize.x);
+ f.right = new FormAttachment(100, -20);
+ f.bottom = new FormAttachment(100, -10);
+ deleteButton.setLayoutData(f);
+
+ f = new FormData();
+ minSize = deleteButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+ f.width = Math.max(widthHint, minSize.x);
+ f.right = new FormAttachment(deleteButton, -10);
+ f.bottom = new FormAttachment(100, -10);
+ createButton.setLayoutData(f);
+
+ f = new FormData();
+ f.top = new FormAttachment(directory, 10);
+ f.left = new FormAttachment(0, 0);
+ f.right = new FormAttachment(100, 0);
+ f.bottom = new FormAttachment(createButton, -10);
+ fileList.setLayoutData(f);
+
+ setControl(container);
+ }
+
+}
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 2010-09-02
00:12:04 UTC (rev 24633)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java 2010-09-02
00:14:10 UTC (rev 24634)
@@ -14,6 +14,9 @@
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogPage;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
@@ -29,8 +32,6 @@
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
@@ -103,16 +104,15 @@
private SelectionListener manageListener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
- Display d = Display.getDefault();
- Shell shell = new Shell(d);
- FileDialog f = new FileDialog(shell, SWT.NULL);
- f.setFilterNames(new String[] {WizardMessages.getString(PEM_NAME)});
- f.setFilterExtensions(new String[] {"*.pem"}); //$NON-NLS-1$
- String keyname = f.open();
- if (keyname != null && keyname.length() > 0) {
- keyname = keyname.substring(0, keyname.length() - 4);
+ Shell shell = getShell();
+ ManageKeys wizard = new ManageKeys(cloud, ".pem"); //$NON-NLS-1$
+ WizardDialog dialog = new CustomWizardDialog(shell, wizard,
+ IDialogConstants.OK_LABEL);
+ dialog.create();
+ dialog.open();
+ String keyname = wizard.getKeyName();
+ if (keyname != null)
keyText.setText(keyname);
- }
}
};
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties 2010-09-02
00:12:04 UTC (rev 24633)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties 2010-09-02
00:14:10 UTC (rev 24634)
@@ -32,6 +32,8 @@
Key.label=Key Name:
BrowseButton.label=Browse...
ManageButton.label=Manage...
+NewButton.label=New...
+DeleteButton.label=Delete
Pem.name=PEM file (*.pem)
@@ -62,5 +64,17 @@
NewInstance.title=Launch Instance
NewInstance.name=Launch Instance
+ManageKeys.desc=Select a physical key to use when creating an instance so that it may be
accessed remotely.
+ManageKeys.title=Manage Keys
+ManageKeys.name=Manage Keys
+
+ErrorInvalidDirectory.text=Specified directory is not a valid existing directory
+Directory.label=Directory
+
+CreateKey.title=Create Key
+CreateKey.msg=Specify a unique name for a new key:
+ConfirmKeyDelete.title=Confirm Key Delete
+ConfirmKeyDelete.msg=Confirm deletion of key: {0}
+
StartingInstance.title=Starting Instance
StartingInstance.msg=Starting Instance: {0}
\ No newline at end of file