Author: rob.stryker(a)jboss.com
Date: 2010-01-05 15:53:24 -0500 (Tue, 05 Jan 2010)
New Revision: 19654
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/wizard/
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/wizard/SCPServerWizardFragment.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerDelegate.java
Log:
JBIDE-5556 - wizard page for ssh server
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml 2010-01-05 20:44:17 UTC (rev
19653)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml 2010-01-05 20:53:24 UTC (rev
19654)
@@ -104,5 +104,13 @@
typeIds="org.jboss.ide.eclipse.as.ssh.server.remoteServerType,org.jboss.ide.eclipse.as.ssh.server.remoteServerRuntimeType">
</image>
</extension>
+ <extension
+ point="org.eclipse.wst.server.ui.wizardFragments">
+ <fragment
+
class="org.jboss.ide.eclipse.as.ssh.ui.wizard.SCPServerWizardFragment"
+
id="org.jboss.ide.eclipse.as.ssh.server.remoteServerWizardFragment"
+ typeIds="org.jboss.ide.eclipse.as.ssh.server.remoteServerType">
+ </fragment>
+ </extension>
</plugin>
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java 2010-01-05
20:44:17 UTC (rev 19653)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java 2010-01-05
20:53:24 UTC (rev 19654)
@@ -26,6 +26,8 @@
public static String SCPDeploymentDescription;
public static String EditorSetUserCommandLabel;
public static String EditorSetPasswordCommandLabel;
+ public static String SCPServerDescription;
+
static {
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties 2010-01-05
20:44:17 UTC (rev 19653)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties 2010-01-05
20:53:24 UTC (rev 19654)
@@ -8,4 +8,5 @@
EditorSetPasswordCommandLabel=Set Password
EditorSetDeployCommandLabel=Set Remote Deployment Folder
SCPDeploymentSectionTitle=SCP Deployment
-SCPDeploymentDescription=Deploy your modules via SCP file transfer
\ No newline at end of file
+SCPDeploymentDescription=Deploy your modules via SCP file transfer
+SCPServerDescription=A server which allows remote deployment via SCP
\ No newline at end of file
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerDelegate.java 2010-01-05
20:44:17 UTC (rev 19653)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerDelegate.java 2010-01-05
20:53:24 UTC (rev 19654)
@@ -16,7 +16,7 @@
public class SSHServerDelegate extends DeployableServer {
public SSHServerDelegate() {
- // TODO Auto-generated constructor stub
+ super();
}
public IJBossServerRuntime getRuntime() {
@@ -26,8 +26,26 @@
public String getUsername() {
return getAttribute(ISSHDeploymentConstants.USERNAME, (String)null);
}
-
public String getPassword() {
return getAttribute(ISSHDeploymentConstants.PASSWORD, (String)null);
}
+ public String getHostsFile() {
+ return getAttribute(ISSHDeploymentConstants.HOSTS_FILE, (String)null);
+ }
+ public String getDeployFolder() {
+ return getAttribute(ISSHDeploymentConstants.DEPLOY_DIRECTORY, (String)null);
+ }
+
+ public void setUsername(String user) {
+ setAttribute(ISSHDeploymentConstants.USERNAME, user);
+ }
+ public void setPassword(String pass) {
+ setAttribute(ISSHDeploymentConstants.PASSWORD, pass);
+ }
+ public void setHostsFile(String file) {
+ setAttribute(ISSHDeploymentConstants.HOSTS_FILE, file);
+ }
+ public void setDeployFolder(String folder) {
+ setAttribute(ISSHDeploymentConstants.DEPLOY_DIRECTORY, folder);
+ }
}
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/wizard/SCPServerWizardFragment.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/wizard/SCPServerWizardFragment.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/wizard/SCPServerWizardFragment.java 2010-01-05
20:53:24 UTC (rev 19654)
@@ -0,0 +1,179 @@
+package org.jboss.ide.eclipse.as.ssh.ui.wizard;
+
+import java.io.File;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jst.j2ee.model.internal.validation.ValidateBMPBean;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.TaskModel;
+import org.eclipse.wst.server.ui.internal.ImageResource;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+import org.eclipse.wst.server.ui.wizard.WizardFragment;
+import org.jboss.ide.eclipse.as.core.util.ServerUtil;
+import org.jboss.ide.eclipse.as.ssh.Messages;
+import org.jboss.ide.eclipse.as.ssh.server.SSHServerDelegate;
+
+public class SCPServerWizardFragment extends WizardFragment {
+ private IWizardHandle handle;
+ private Text userText, passText, deployText, hostsFileText;
+ private ModifyListener listener;
+ private SelectionListener browseHostsButtonListener;
+ private Button browseHostsFileButton;
+ private String user, pass, deploy, hostFile;
+
+ public SCPServerWizardFragment() {
+ super();
+ }
+
+ public Composite createComposite(Composite parent, IWizardHandle handle) {
+ this.handle = handle;
+ handle.setDescription(Messages.SCPServerDescription);
+ handle.setImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_WIZBAN_NEW_SERVER));
+
+ Composite main = new Composite(parent, SWT.NONE);
+ main.setLayout(new FormLayout());
+ addWidgets(main);
+ validate();
+ return main;
+ }
+
+ protected void addWidgets(Composite composite) {
+ composite.setLayout(new FormLayout());
+
+ Composite inner = new Composite(composite, SWT.NONE);
+ inner.setLayout(new GridLayout(3, false));
+
+ FormData innerData = new FormData();
+ innerData.top = new FormAttachment(0, 5);
+ innerData.left = new FormAttachment(0, 5);
+ innerData.right = new FormAttachment(100, -5);
+ inner.setLayoutData(innerData);
+
+ GridData textData = new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1);
+ textData.widthHint = 300;
+
+ Label label = new Label(inner, SWT.NONE);
+ label.setText(Messages.DeployRootFolder);
+ deployText = new Text(inner, SWT.BORDER);
+ deployText.setText("/home/rob/deployFolder");
+ listener = new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ updateValues();
+ }
+ };
+ deployText.addModifyListener(listener);
+ deployText.setEnabled(true);
+ deployText.setLayoutData(textData);
+
+ Label userLabel = new Label(inner, SWT.NONE);
+ userLabel.setText(Messages.UserLabel);
+ userText = new Text(inner, SWT.BORDER);
+ userText.setText("username");
+ userText.addModifyListener(listener);
+ userText.setEnabled(true);
+ userText.setLayoutData(textData);
+
+
+ Label passLabel = new Label(inner, SWT.NONE);
+ passLabel.setText(Messages.PassLabel);
+ passText = new Text(inner, SWT.BORDER);
+ passText.setText("password");
+ passText.addModifyListener(listener);
+ passText.setEnabled(true);
+ passText.setLayoutData(textData);
+
+ Label hostsLabel = new Label(inner, SWT.NONE);
+ hostsLabel.setText(Messages.HostsLabel);
+ Composite hostsFileComposite = new Composite(inner, SWT.NONE);
+ hostsFileComposite.setLayoutData(textData);
+ hostsFileComposite.setLayout(new GridLayout(2,false));
+
+ hostsFileText = new Text(hostsFileComposite, SWT.BORDER);
+ hostsFileText.setText("/home/username/.ssh/known_hosts");
+ hostsFileText.addModifyListener(listener);
+ hostsFileText.setEnabled(true);
+ GridData hostsFileData = new GridData(SWT.LEFT, SWT.CENTER, true, false);
+ hostsFileData.widthHint = 200;
+ hostsFileData.grabExcessHorizontalSpace = true;
+ hostsFileText.setLayoutData(hostsFileData);
+
+ browseHostsFileButton = new Button(hostsFileComposite, SWT.PUSH);
+ browseHostsFileButton.setText(Messages.browse);
+ browseHostsButtonListener = new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ browseForHostsSelected();
+ }
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ };
+ browseHostsFileButton.addSelectionListener(browseHostsButtonListener);
+ }
+
+ protected void browseForHostsSelected() {
+ FileDialog d = new FileDialog(new Shell());
+ IPath p = ServerUtil.makeGlobal(null, new Path(hostsFileText.getText()));
+ d.setFilterPath(p.toString());
+ String x = d.open();
+ if (x != null) {
+ hostsFileText.setText(x);
+ }
+ }
+
+ protected void updateValues() {
+ user = userText.getText();
+ pass = passText.getText();
+ deploy = deployText.getText();
+ hostFile = hostsFileText.getText();
+ validate();
+ }
+
+ public void enter() {
+ }
+ public void exit() {
+ }
+ public boolean hasComposite() {
+ return true;
+ }
+
+ protected void validate() {
+ if( hostFile == null || !(new File(hostFile).exists()) || !(new
File(hostFile).isFile()))
+ handle.setMessage("Host file must exist", IMessageProvider.ERROR);
+ else
+ handle.setMessage(null, IMessageProvider.NONE);
+ handle.update();
+ }
+
+ public boolean isComplete() {
+ return handle.getMessageType() == IMessageProvider.NONE;
+ }
+
+ public void performFinish(IProgressMonitor monitor) throws CoreException {
+ IServerWorkingCopy serverWC = (IServerWorkingCopy)
getTaskModel().getObject(TaskModel.TASK_SERVER);
+ SSHServerDelegate server =
(SSHServerDelegate)serverWC.loadAdapter(SSHServerDelegate.class, new
NullProgressMonitor());
+ server.setUsername(user); //$NON-NLS-1$
+ server.setPassword(pass); //$NON-NLS-1$
+ server.setHostsFile(hostFile);
+ server.setDeployFolder(deploy);
+ }
+}