Skip to content

Commit 54472d8

Browse files
author
angelozerr
committed
Provide an UIInterpreter Helper.
1 parent 0db621a commit 54472d8

File tree

7 files changed

+94
-59
lines changed

7 files changed

+94
-59
lines changed

eclipse/terminal/ts.eclipse.ide.terminal.interpreter.npm/src/ts/eclipse/ide/terminal/interpreter/npm/internal/commands/NpmInstallCommandInterpreter.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,36 @@
22

33
import org.eclipse.core.resources.IContainer;
44
import org.eclipse.core.resources.ResourcesPlugin;
5+
import org.eclipse.core.runtime.IPath;
56
import org.eclipse.core.runtime.IProgressMonitor;
67
import org.eclipse.core.runtime.IStatus;
78
import org.eclipse.core.runtime.Path;
89
import org.eclipse.core.runtime.Status;
9-
import org.eclipse.jface.viewers.StructuredSelection;
10-
import org.eclipse.ui.IPageLayout;
11-
import org.eclipse.ui.IViewPart;
12-
import org.eclipse.ui.IWorkbenchPage;
13-
import org.eclipse.ui.PlatformUI;
14-
import org.eclipse.ui.part.ISetSelectionTarget;
1510
import org.eclipse.ui.progress.UIJob;
1611

1712
import ts.eclipse.ide.terminal.interpreter.AbstractCommandInterpreter;
13+
import ts.eclipse.ide.terminal.interpreter.UIInterpreterHelper;
1814

1915
public class NpmInstallCommandInterpreter extends AbstractCommandInterpreter {
2016

17+
private final IPath NODE_MODULES_PATH = new Path("node_modules");
18+
2119
public NpmInstallCommandInterpreter(String workingDir) {
2220
super(workingDir);
2321
}
2422

2523
@Override
2624
public void execute() {
27-
final IContainer[] c = ResourcesPlugin.getWorkspace().getRoot().findContainersForLocation(new Path(getWorkingDir()));
25+
final IContainer[] c = ResourcesPlugin.getWorkspace().getRoot().findContainersForLocation(getWorkingDirPath());
2826
if (c != null && c.length > 0) {
2927
final IContainer container = c[0];
3028
new UIJob("Refresh npm project") {
3129

3230
@Override
3331
public IStatus runInUIThread(IProgressMonitor monitor) {
34-
// try {
35-
// container.refreshLocal(IResource.DEPTH_INFINITE,
36-
// monitor);
37-
if (container.exists(new Path("node_modules"))) {
38-
IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0].getActivePage();
39-
final IViewPart view = page.findView(IPageLayout.ID_PROJECT_EXPLORER);
40-
((ISetSelectionTarget) view)
41-
.selectReveal(new StructuredSelection(container.getFolder(new Path("node_modules"))));
32+
if (container.exists(NODE_MODULES_PATH)) {
33+
UIInterpreterHelper.selectRevealInProjectExplorer(container.getFolder(NODE_MODULES_PATH));
4234
}
43-
// } catch (CoreException e) {
44-
// // TODO Auto-generated catch block
45-
// e.printStackTrace();
46-
// }
4735
return Status.OK_STATUS;
4836
}
4937
}.schedule();

eclipse/terminal/ts.eclipse.ide.terminal.interpreter/src/ts/eclipse/ide/terminal/interpreter/AbstractCommandInterpreter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
*/
1111
package ts.eclipse.ide.terminal.interpreter;
1212

13+
import org.eclipse.core.runtime.IPath;
14+
import org.eclipse.core.runtime.Path;
15+
1316
/**
1417
* Abstract class for {@link ICommandInterpreter}.
1518
*
@@ -26,6 +29,10 @@ public String getWorkingDir() {
2629
return workingDir;
2730
}
2831

32+
public IPath getWorkingDirPath() {
33+
return new Path(getWorkingDir());
34+
}
35+
2936
@Override
3037
public void onTrace(String line) {
3138
// Do nothing
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package ts.eclipse.ide.terminal.interpreter;
2+
3+
import org.eclipse.core.resources.IFile;
4+
import org.eclipse.jface.viewers.StructuredSelection;
5+
import org.eclipse.ui.IEditorDescriptor;
6+
import org.eclipse.ui.IPageLayout;
7+
import org.eclipse.ui.IViewPart;
8+
import org.eclipse.ui.IWorkbenchPage;
9+
import org.eclipse.ui.PartInitException;
10+
import org.eclipse.ui.PlatformUI;
11+
import org.eclipse.ui.part.FileEditorInput;
12+
import org.eclipse.ui.part.ISetSelectionTarget;
13+
14+
/**
15+
* Commons UI interpreter.
16+
*
17+
*/
18+
public class UIInterpreterHelper {
19+
20+
/**
21+
* Open in an editor the given file.
22+
*
23+
* @param file
24+
* @throws PartInitException
25+
*/
26+
public static void openFile(IFile file) throws PartInitException {
27+
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
28+
IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
29+
if (desc != null) {
30+
page.openEditor(new FileEditorInput(file), desc.getId());
31+
}
32+
}
33+
34+
/**
35+
* Select the given element in the Project Explorer.
36+
*
37+
* @param element
38+
*/
39+
public static void selectRevealInProjectExplorer(Object element) {
40+
selectReveal(element, IPageLayout.ID_PROJECT_EXPLORER);
41+
}
42+
43+
/**
44+
* Select the given element in the view of the given id
45+
*
46+
* @param element
47+
*/
48+
public static void selectReveal(Object element, String viewId) {
49+
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
50+
// Select in the Project Explorer the generated files.
51+
IViewPart view = page.findView(viewId);
52+
if (view instanceof ISetSelectionTarget) {
53+
((ISetSelectionTarget) view).selectReveal(new StructuredSelection(element));
54+
}
55+
}
56+
}

eclipse/terminal/ts.eclipse.ide.terminal.interpreter/src/ts/eclipse/ide/terminal/interpreter/internal/commands/CdCommandInterpreter.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,10 @@
22

33
import org.eclipse.core.resources.IContainer;
44
import org.eclipse.core.resources.ResourcesPlugin;
5-
import org.eclipse.core.runtime.Path;
6-
import org.eclipse.jface.viewers.StructuredSelection;
7-
import org.eclipse.swt.widgets.Display;
8-
import org.eclipse.ui.IPageLayout;
9-
import org.eclipse.ui.IViewPart;
10-
import org.eclipse.ui.IWorkbenchPage;
11-
import org.eclipse.ui.PlatformUI;
12-
import org.eclipse.ui.part.ISetSelectionTarget;
5+
import org.eclipse.ui.progress.UIJob;
136

147
import ts.eclipse.ide.terminal.interpreter.AbstractCommandInterpreter;
8+
import ts.eclipse.ide.terminal.interpreter.internal.jobs.RefreshContainerJob;
159

1610
public class CdCommandInterpreter extends AbstractCommandInterpreter {
1711

@@ -26,18 +20,12 @@ public CdCommandInterpreter(String path, String workingDir) {
2620
public void execute() {
2721
try {
2822
final IContainer[] c = ResourcesPlugin.getWorkspace().getRoot()
29-
.findContainersForLocation(new Path(getWorkingDir() + "/" + path));
23+
.findContainersForLocation(getWorkingDirPath().append(path));
3024
if (c != null && c.length > 0) {
31-
IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0].getActivePage();
32-
final IViewPart view = page.findView(IPageLayout.ID_PROJECT_EXPLORER);
33-
34-
Display.getDefault().syncExec(new Runnable() {
35-
36-
@Override
37-
public void run() {
38-
((ISetSelectionTarget) view).selectReveal(new StructuredSelection(c));
39-
}
40-
});
25+
for (int i = 0; i < c.length; i++) {
26+
UIJob job = new RefreshContainerJob(c[i], false);
27+
job.schedule();
28+
}
4129
}
4230
} catch (Throwable e) {
4331
e.printStackTrace();

eclipse/terminal/ts.eclipse.ide.terminal.interpreter/src/ts/eclipse/ide/terminal/interpreter/internal/commands/DelCommandInterpreter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ public DelCommandInterpreter(String path, String workingDir) {
2020
@Override
2121
public void execute() {
2222
final IContainer[] c = ResourcesPlugin.getWorkspace().getRoot()
23-
.findContainersForLocation(new Path(getWorkingDir() + "/" + path));
23+
.findContainersForLocation(new Path(getWorkingDir()).append(path));
2424
if (c != null && c.length > 0) {
2525
for (int i = 0; i < c.length; i++) {
26-
UIJob job = new RefreshContainerJob(c[i]);
26+
UIJob job = new RefreshContainerJob(c[i], true);
2727
job.schedule();
2828
}
2929
}

eclipse/terminal/ts.eclipse.ide.terminal.interpreter/src/ts/eclipse/ide/terminal/interpreter/internal/commands/RdCommandInterpreter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import org.eclipse.core.resources.IContainer;
44
import org.eclipse.core.resources.ResourcesPlugin;
5-
import org.eclipse.core.runtime.Path;
65
import org.eclipse.ui.progress.UIJob;
76

87
import ts.eclipse.ide.terminal.interpreter.AbstractCommandInterpreter;
@@ -20,10 +19,10 @@ public RdCommandInterpreter(String path, String workingDir) {
2019
@Override
2120
public void execute() {
2221
final IContainer[] c = ResourcesPlugin.getWorkspace().getRoot()
23-
.findContainersForLocation(new Path(getWorkingDir()).append(path));
22+
.findContainersForLocation(getWorkingDirPath().append(path));
2423
if (c != null && c.length > 0) {
2524
for (int i = 0; i < c.length; i++) {
26-
UIJob job = new RefreshContainerJob(c[i].getParent());
25+
UIJob job = new RefreshContainerJob(c[i].getParent(), true);
2726
job.schedule();
2827
}
2928
}

eclipse/terminal/ts.eclipse.ide.terminal.interpreter/src/ts/eclipse/ide/terminal/interpreter/internal/jobs/RefreshContainerJob.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,34 @@
66
import org.eclipse.core.runtime.IProgressMonitor;
77
import org.eclipse.core.runtime.IStatus;
88
import org.eclipse.core.runtime.Status;
9-
import org.eclipse.jface.viewers.StructuredSelection;
10-
import org.eclipse.ui.IPageLayout;
11-
import org.eclipse.ui.IViewPart;
12-
import org.eclipse.ui.IWorkbenchPage;
13-
import org.eclipse.ui.PlatformUI;
14-
import org.eclipse.ui.part.ISetSelectionTarget;
159
import org.eclipse.ui.progress.UIJob;
1610

11+
import ts.eclipse.ide.terminal.interpreter.UIInterpreterHelper;
1712
import ts.eclipse.ide.terminal.interpreter.internal.TerminalInterpreterPlugin;
1813

1914
public class RefreshContainerJob extends UIJob {
2015

2116
private final IContainer container;
17+
private final boolean refresh;
2218

23-
public RefreshContainerJob(IContainer container) {
19+
public RefreshContainerJob(IContainer container, boolean refresh) {
2420
super("Refresh container job");
2521
this.container = container;
22+
this.refresh = refresh;
2623
}
2724

2825
@Override
2926
public IStatus runInUIThread(IProgressMonitor monitor) {
30-
try {
31-
container.refreshLocal(IResource.DEPTH_INFINITE, monitor);
32-
} catch (CoreException e) {
33-
return new Status(IStatus.ERROR, TerminalInterpreterPlugin.PLUGIN_ID, "Error while refreshing container",
34-
e);
27+
if (refresh) {
28+
try {
29+
container.refreshLocal(IResource.DEPTH_INFINITE, monitor);
30+
} catch (CoreException e) {
31+
return new Status(IStatus.ERROR, TerminalInterpreterPlugin.PLUGIN_ID,
32+
"Error while refreshing container", e);
33+
}
3534
}
36-
37-
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
38-
final IViewPart view = page.findView(IPageLayout.ID_PROJECT_EXPLORER);
39-
((ISetSelectionTarget) view).selectReveal(new StructuredSelection(container));
35+
// Select the container in the Project Explorer
36+
UIInterpreterHelper.selectRevealInProjectExplorer(container);
4037
return Status.OK_STATUS;
4138
}
4239
}

0 commit comments

Comments
 (0)