8000 Cache the node.js status to avoid to compute it for each character typed · lgrignon/typescript.java@ea479c4 · GitHub
[go: up one dir, main page]

Skip to content

Commit ea479c4

Browse files
committed
Cache the node.js status to avoid to compute it for each character typed
for the project name
1 parent 63aedc3 commit ea479c4

File tree

1 file changed

+21
-10
lines changed
Filter options

1 file changed

+21
-10
lines changed

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/ui/wizards/AbstractWizardNewTypeScriptProjectCreationPage.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ public abstract class AbstractWizardNewTypeScriptProjectCreationPage extends Wiz
8686
private Text nodePath;
8787
private Text nodeVersion;
8888

89+
private NodeJsStatus nodejsStatus;
90+
8991
public AbstractWizardNewTypeScriptProjectCreationPage(String pageName, BasicNewResourceWizard wizard) {
9092
super(pageName);
9193
this.wizard = wizard;
@@ -189,7 +191,7 @@ private void createEmbeddedNodejsField(Composite parent, IEmbeddedNodejs[] insta
189191
useEmbeddedNodeJsButton = new Button(parent, SWT.RADIO);
190192
useEmbeddedNodeJsButton
191193
.setText(TypeScriptUIMessages.AbstractWizardNewTypeScriptProjectCreationPage_useEmbeddedNodeJs_label);
192-
useEmbeddedNodeJsButton.addListener(SWT.Selection, this);
194+
useEmbeddedNodeJsButton.addListener(SWT.Selection, nodeJsStatusChanged());
193195

194196
embeddedNodeJs = new Combo(parent, SWT.READ_ONLY);
195197
embeddedNodeJs.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -205,7 +207,7 @@ private void createEmbeddedNodejsField(Composite parent, IEmbeddedNodejs[] insta
205207
}
206208
embeddedNodeJs.setItems(valueLabels);
207209
embeddedNodeJs.setFont(JFaceResources.getDialogFont());
208-
embeddedNodeJs.addListener(SWT.Modify, this);
210+
embeddedNodeJs.addListener(SWT.Modify, nodeJsStatusChanged());
209211
embeddedNodeJs.addModifyListener(new ModifyListener() {
210212

211213
@Override
@@ -215,19 +217,25 @@ public void modifyText(ModifyEvent e) {
215217
});
216218
}
217219

220+
private Listener nodeJsStatusChanged() {
221+
return (event) -> {
222+
nodejsStatus = null;
223+
handleEvent(event);
224+
};
225+
}
226+
218227
/** Creates the field for selecting the installed Node.js. */
219228
private void createInstalledNodejsField(Composite parent) {
220229
if (hasEmbeddedNodeJs) {
221230
Button useInstalledNodejs = new Button(parent, SWT.RADIO);
222231
useInstalledNodejs
223232
.setText(TypeScriptUIMessages.AbstractWizardNewTypeScriptProjectCreationPage_useInstalledNodeJs_label);
224-
useInstalledNodejs.addListener(SWT.Selection, this);
225233
}
226234
String[] defaultPaths = IDENodejsProcessHelper.getAvailableNodejsPaths();
227235
installedNodeJs = new Combo(parent, SWT.NONE);
228236
installedNodeJs.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
229237
installedNodeJs.setItems(defaultPaths);
230-
installedNodeJs.addListener(SWT.Modify, this);
238+
installedNodeJs.addListener(SWT.Modify, nodeJsStatusChanged());
231239
installedNodeJs.addModifyListener(new ModifyListener() {
232240

233241
@Override
@@ -357,18 +365,21 @@ protected IStatus validatePageImpl() {
357365
* @return the validation status of the nodejs path.
358366
*/
359367
private IStatus validateAndUpdateNodejsPath() {
368+
if (nodejsStatus != null) {
369+
return nodejsStatus;
370+
}
360371
// Compute node.j status
361-
NodeJsStatus status = validateNodejsPath();
372+
nodejsStatus = validateNodejsPath();
362373
// Update node version & path
363-
if (status.isOK()) {
364-
nodeVersion.setText(status.getNodeVersion());
365-
nodePath.setText(FileUtils.getPath(status.getNodeFile()));
374+
if (nodejsStatus.isOK()) {
375+
nodeVersion.setText(nodejsStatus.getNodeVersion());
376+
nodePath.setText(FileUtils.getPath(nodejsStatus.getNodeFile()));
366377
} else {
367378
nodeVersion.setText("");
368379
nodePath.setText("");
369380
}
370-
nodeJsChanged(status.getNodeFile());
371-
return status;
381+
nodeJsChanged(nodejsStatus.getNodeFile());
382+
return nodejsStatus;
372383
}
373384

374385
/**

0 commit comments

Comments
 (0)
0