Skip to content

Commit 7f1bb64

Browse files
committed
Switched to native eclipse wizard rather than reuse Swing UI.
1 parent 86944f0 commit 7f1bb64

File tree

5 files changed

+192
-42
lines changed

5 files changed

+192
-42
lines changed

src/ServiceStackEclipse/.classpath

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,5 @@
33
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
44
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
55
<classpathentry kind="src" path="src"/>
6-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt_3.11.0.v20150430-1445.jar"/>
7-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.annotation_1.1.100.v20140704-0625.jar"/>
8-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.annotation_2.0.100.v20150311-1658.jar"/>
9-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.apt.core_3.4.0.v20150423-0947.jar"/>
10-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.apt.pluggable.core_1.1.0.v20150423-0947.jar"/>
11-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.apt.ui_3.4.0.v20150423-0947.jar"/>
12-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.compiler.apt_1.2.0.v20150424-1830.jar"/>
13-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.compiler.tool_1.1.0.v20150423-0947.jar"/>
14-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.core_3.11.0.v20150429-0810.jar"/>
15-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.core.manipulation_1.5.100.v20141002-1241.jar"/>
16-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.debug.ui_3.7.0.v20150414-0909.jar"/>
17-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.doc.user_3.11.0.v20150429-1030.jar"/>
18-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.junit_3.8.0.v20150428-1340.jar"/>
19-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.junit.core_3.7.400.v20150423-0747.jar"/>
20-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.junit.runtime_3.4.500.v20140527-1138.jar"/>
21-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.junit4.runtime_1.1.500.v20150423-0747.jar"/>
22-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.launching_3.8.0.v20150416-1425.jar"/>
23-
<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.jdt.ui_3.11.0.v20150428-1805.jar"/>
246
<classpathentry kind="output" path="bin"/>
257
</classpath>

src/ServiceStackEclipse/META-INF/MANIFEST.MF

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ Bundle-SymbolicName: net.servicestack.eclipse;singleton:=true
55
Bundle-Version: 1.0.0.qualifier
66
Bundle-Vendor: ServiceStack
77
Require-Bundle: org.eclipse.ui,
8-
org.eclipse.core.resources
8+
org.eclipse.core.resources,
9+
org.eclipse.jdt.core;bundle-version="3.11.0"
910
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
10-
Import-Package: org.eclipse.core.runtime
11+
Import-Package: org.eclipse.core.runtime,
12+
org.eclipse.jdt.core

src/ServiceStackEclipse/src/net/servicestack/eclipse/popup/actions/AddReferenceAction.java

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,25 @@
33
import org.eclipse.jface.action.IAction;
44
import org.eclipse.jface.viewers.ISelection;
55
import org.eclipse.jface.viewers.IStructuredSelection;
6+
import org.eclipse.jface.wizard.WizardDialog;
67
import org.eclipse.swt.widgets.Shell;
78
import org.eclipse.ui.IObjectActionDelegate;
89
import org.eclipse.ui.ISelectionService;
910
import org.eclipse.ui.IWorkbenchPart;
10-
import org.eclipse.jdt.internal.core.PackageFragment;
11+
import org.eclipse.ui.IWorkbenchWindow;
12+
import org.eclipse.ui.PlatformUI;
13+
14+
import net.servicestack.eclipse.wizard.AddReferenceWizard;
15+
16+
import org.eclipse.core.resources.IFolder;
17+
import org.eclipse.jdt.core.IPackageFragment;
1118

1219
public class AddReferenceAction implements IObjectActionDelegate {
1320

1421
private Shell shell;
22+
private IFolder _selection;
23+
private IPackageFragment _packageFragment;
1524
private ISelectionService selectionService;
16-
1725
/**
1826
* Constructor for Action1.
1927
*/
@@ -26,39 +34,41 @@ public AddReferenceAction() {
2634
*/
2735
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
2836
shell = targetPart.getSite().getShell();
37+
targetPart.getSite().getWorkbenchWindow().getSelectionService();
2938
selectionService = targetPart.getSite().getWorkbenchWindow().getSelectionService();
3039
}
3140

3241
/**
3342
* @see IActionDelegate#run(IAction)
3443
*/
3544
public void run(IAction action) {
36-
IStructuredSelection structured = (IStructuredSelection) selectionService
37-
.getSelection("org.eclipse.jdt.ui.PackageExplorer");
38-
Object firstElement = structured.getFirstElement();
39-
if(firstElement instanceof PackageFragment) { //NoClassDefFoundError...
40-
PackageFragment packFrag = (PackageFragment)firstElement;
45+
if (_selection != null) {
46+
IStructuredSelection packageSelection = (IStructuredSelection) selectionService
47+
.getSelection("org.eclipse.jdt.ui.PackageExplorer");
48+
Object firstElement = packageSelection.getFirstElement();
49+
if(firstElement instanceof IPackageFragment) {
50+
_packageFragment = (IPackageFragment)firstElement;
51+
}
52+
AddReferenceWizard generationWizard = new AddReferenceWizard(_selection, _packageFragment);
53+
WizardDialog dialog = new WizardDialog(shell, generationWizard);
54+
if (dialog.open() == WizardDialog.OK){
55+
// MessageDialog.openInformation(shell, "CTE tree generation", "CTE trees are being generated, checking the process view for details!");
56+
}
4157
}
42-
// IFolder folder = (IFolder) structured.getFirstElement();
43-
// if(folder == null) {
44-
// return;
45-
// }
46-
// IPath path = folder.getLocation();
47-
//
48-
// ObjectPluginAction pluginAction = (ObjectPluginAction)action;
49-
AddRefDialog dialog = new AddRefDialog();
50-
dialog.pack();
51-
dialog.setLocationRelativeTo(null);
52-
dialog.setSize(dialog.getPreferredSize());
53-
dialog.setResizable(true);
54-
dialog.setTitle("Add ServiceStack Reference");
55-
dialog.setVisible(true);
5658
}
5759

5860
/**
5961
* @see IActionDelegate#selectionChanged(IAction, ISelection)
6062
*/
63+
@Override
6164
public void selectionChanged(IAction action, ISelection selection) {
65+
if(selection instanceof IStructuredSelection) {
66+
IStructuredSelection structured = (IStructuredSelection)selection;
67+
Object firstElement = structured.getFirstElement();
68+
if(firstElement instanceof IFolder) {
69+
_selection = (IFolder) firstElement;
70+
}
71+
}
6272
}
63-
73+
6474
}
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package net.servicestack.eclipse.wizard;
2+
3+
import org.eclipse.jface.wizard.WizardPage;
4+
import org.eclipse.swt.SWT;
5+
import org.eclipse.swt.events.VerifyEvent;
6+
import org.eclipse.swt.events.VerifyListener;
7+
import org.eclipse.swt.layout.GridData;
8+
import org.eclipse.swt.layout.GridLayout;
9+
import org.eclipse.swt.widgets.Button;
10+
import org.eclipse.swt.widgets.Composite;
11+
import org.eclipse.swt.widgets.Label;
12+
import org.eclipse.swt.widgets.Text;
13+
14+
public class AddReferencePage extends WizardPage {
15+
16+
Button _enabled;
17+
private boolean _enabledValue = true;
18+
private String _applicationFolder;
19+
20+
private Text addressUrlTextField;
21+
private Text nameTextField;
22+
23+
private String errorMessage;
24+
private String selectedDirectory;
25+
26+
protected AddReferencePage() {
27+
super("Add ServiceStack Reference");
28+
setTitle("Add ServiceStack Reference");
29+
setDescription("To generate the DTO Service Model types for a specific ServiceStack instance, enter the base URI for the remote ServiceStack server and click Finish.");
30+
// TODO Auto-generated constructor stub
31+
}
32+
33+
@Override
34+
public void createControl(Composite parent) {
35+
// TODO Auto-generated method stub
36+
Composite composite = new Composite(parent, SWT.NULL);
37+
composite.setBounds(100, 100, 450, 300);
38+
GridLayout layout = new GridLayout();
39+
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
40+
composite.setLayout(layout);
41+
layout.numColumns = 1;
42+
Label label1 = new Label(composite,SWT.NONE);
43+
label1.setText("Address Url");
44+
addressUrlTextField = new Text(composite,SWT.BORDER | SWT.SINGLE);
45+
addressUrlTextField.setToolTipText("eg, http://example.com/");
46+
addressUrlTextField.setLayoutData(gd);
47+
addressUrlTextField.addVerifyListener(new VerifyListener() {
48+
49+
@Override
50+
public void verifyText(VerifyEvent event) {
51+
String text = event.text;
52+
//seriously..doit?
53+
boolean result = text != null && text.length() > 0;
54+
if(!result) {
55+
setErrorMessage("URL Address is required");
56+
}
57+
event.doit = result;
58+
}
59+
});
60+
Label label3 = new Label(composite, SWT.NONE);
61+
label3.setText("Name");
62+
nameTextField = new Text(composite,SWT.BORDER | SWT.SINGLE);
63+
nameTextField.setText("dto.java");
64+
nameTextField.setLayoutData(gd);
65+
nameTextField.addVerifyListener(new VerifyListener() {
66+
67+
@Override
68+
public void verifyText(VerifyEvent event) {
69+
String text = event.text;
70+
//seriously..doit?
71+
boolean result = text != null && text.length() > 0;
72+
if(!result) {
73+
setErrorMessage("A file name is required.");
74+
}
75+
event.doit = result;
76+
}
77+
});
78+
79+
setControl(composite);
80+
dialogChanged();
81+
}
82+
83+
private void dialogChanged() {
84+
updateStatus(null);
85+
}
86+
87+
private void updateStatus(String message) {
88+
setErrorMessage(message);
89+
setPageComplete(message == null);
90+
}
91+
92+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package net.servicestack.eclipse.wizard;
2+
3+
import java.lang.reflect.InvocationTargetException;
4+
5+
import org.eclipse.core.resources.IFolder;
6+
import org.eclipse.core.runtime.IProgressMonitor;
7+
import org.eclipse.jdt.core.IPackageFragment;
8+
import org.eclipse.jface.operation.IRunnableWithProgress;
9+
import org.eclipse.jface.wizard.Wizard;
10+
11+
public class AddReferenceWizard extends Wizard {
12+
private AddReferencePage _page;
13+
private IFolder _selection;
14+
IPackageFragment _packageFragment;
15+
16+
public AddReferenceWizard(IFolder selection, IPackageFragment packageFragment) {
17+
_selection = selection;
18+
_packageFragment = packageFragment;
19+
}
20+
21+
@Override
22+
public boolean performFinish() {
23+
// TODO Auto-generated method stub
24+
try {
25+
getContainer().run(true, true, new IRunnableWithProgress() {
26+
public void run(IProgressMonitor monitor) throws InterruptedException {
27+
int sum = 20;
28+
monitor.beginTask("Computing sum: ", sum);
29+
for (int i = 0; i < sum; i++) {
30+
monitor.subTask(Integer.toString(i));
31+
//sleep to simulate long running operation
32+
Thread.sleep(100);
33+
monitor.worked(1);
34+
}
35+
monitor.done();
36+
}
37+
});
38+
} catch (InvocationTargetException e) {
39+
// TODO Auto-generated catch block
40+
e.printStackTrace();
41+
} catch (InterruptedException e) {
42+
// TODO Auto-generated catch block
43+
e.printStackTrace();
44+
}
45+
return false;
46+
}
47+
48+
@Override
49+
public void addPages() {
50+
super.addPages();
51+
52+
_page = new AddReferencePage();
53+
String sessionName = _selection.getParent().getParent().getName().toLowerCase();
54+
// _page.setPathToOutput(_outputFolder.getFolder(sessionName).getLocation().toOSString());
55+
// _page.setPathToInputFolder(_selection.getFolder(sessionName).getLocation().toOSString());
56+
addPage(_page);
57+
}
58+
59+
@Override
60+
public boolean needsProgressMonitor() {
61+
return true;
62+
}
63+
64+
}

0 commit comments

Comments
 (0)