private void initializeListeners() { ITargetChangedListener listener = new ITargetChangedListener() { public void contentsChanged( ITargetDefinition definition, Object source, boolean resolve, boolean forceResolve) { boolean setCancelled = false; if (forceResolve || (resolve && !definition.isResolved())) { try { getContainer() .run( true, true, new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { getTargetDefinition().resolve(new ResolutionProgressMonitor(monitor)); if (monitor.isCanceled()) { throw new InterruptedException(); } } }); } catch (InvocationTargetException e) { PDECore.log(e); } catch (InterruptedException e) { setCancelled = true; } } if (fContentTree != source) { if (setCancelled) { fContentTree .setCancelled(); // If the user cancelled the resolve, change the text to say it // was cancelled } else { fContentTree.setInput(definition); } } if (fLocationTree != source) { fLocationTree.setInput(definition); } if (definition.isResolved() && definition.getStatus().getSeverity() == IStatus.ERROR) { fLocationTab.setImage( PlatformUI.getWorkbench() .getSharedImages() .getImage(ISharedImages.IMG_OBJS_ERROR_TSK)); } else { fLocationTab.setImage(null); } } }; fContentTree.addTargetChangedListener(listener); fLocationTree.addTargetChangedListener(listener); }
/* (non-Javadoc) * @see org.eclipse.pde.internal.ui.wizards.target.TargetDefinitionPage#targetChanged() */ protected void targetChanged(ITargetDefinition definition) { super.targetChanged(definition); if (definition != null) { // When If the page isn't open yet, try running a UI job so the dialog has time to finish // opening new UIJob(PDEUIMessages.TargetDefinitionContentPage_0) { public IStatus runInUIThread(IProgressMonitor monitor) { ITargetDefinition definition = getTargetDefinition(); if (!definition.isResolved()) { try { getContainer() .run( true, true, new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { getTargetDefinition().resolve(new ResolutionProgressMonitor(monitor)); if (monitor.isCanceled()) { throw new InterruptedException(); } } }); } catch (InvocationTargetException e) { PDECore.log(e); } catch (InterruptedException e) { fContentTree.setCancelled(); return Status.CANCEL_STATUS; } } fContentTree.setInput(definition); fLocationTree.setInput(definition); if (definition.isResolved() && definition.getStatus().getSeverity() == IStatus.ERROR) { fLocationTab.setImage( PlatformUI.getWorkbench() .getSharedImages() .getImage(ISharedImages.IMG_OBJS_ERROR_TSK)); } else { fLocationTab.setImage(null); } return Status.OK_STATUS; } }.schedule(); String name = definition.getName(); if (name == null) { name = EMPTY_STRING; } if (name.trim().length() > 0) fNameText.setText(name); else setMessage(PDEUIMessages.TargetDefinitionContentPage_8); fLocationTree.setInput(definition); fContentTree.setInput(definition); String presetValue = (definition.getOS() == null) ? EMPTY_STRING : definition.getOS(); fOSCombo.setText(presetValue); presetValue = (definition.getWS() == null) ? EMPTY_STRING : definition.getWS(); fWSCombo.setText(presetValue); presetValue = (definition.getArch() == null) ? EMPTY_STRING : definition.getArch(); fArchCombo.setText(presetValue); presetValue = (definition.getNL() == null) ? EMPTY_STRING : LocaleUtil.expandLocaleName(definition.getNL()); fNLCombo.setText(presetValue); IPath jrePath = definition.getJREContainer(); if (jrePath == null || jrePath.equals(JavaRuntime.newDefaultJREContainerPath())) { fDefaultJREButton.setSelection(true); } else { String ee = JavaRuntime.getExecutionEnvironmentId(jrePath); if (ee != null) { fExecEnvButton.setSelection(true); fExecEnvsCombo.select(fExecEnvsCombo.indexOf(ee)); } else { String vm = JavaRuntime.getVMInstallName(jrePath); if (vm != null) { fNamedJREButton.setSelection(true); fNamedJREsCombo.select(fNamedJREsCombo.indexOf(vm)); } } } if (fExecEnvsCombo.getSelectionIndex() == -1) fExecEnvsCombo.setText(fExecEnvChoices.first().toString()); if (fNamedJREsCombo.getSelectionIndex() == -1) fNamedJREsCombo.setText(VMUtil.getDefaultVMInstallName()); updateJREWidgets(); presetValue = (definition.getProgramArguments() == null) ? EMPTY_STRING : definition.getProgramArguments(); fProgramArgs.setText(presetValue); presetValue = (definition.getVMArguments() == null) ? EMPTY_STRING : definition.getVMArguments(); fVMArgs.setText(presetValue); fElementViewer.refresh(); } }
/* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { Composite comp = SWTFactory.createComposite(parent, 1, 1, GridData.FILL_BOTH, 0, 0); Composite nameComp = SWTFactory.createComposite(comp, 2, 1, GridData.FILL_HORIZONTAL, 0, 0); SWTFactory.createLabel(nameComp, PDEUIMessages.TargetDefinitionContentPage_4, 1); fNameText = SWTFactory.createSingleText(nameComp, 1); fNameText.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent e) { String name = fNameText.getText().trim(); if (name.length() == 0) { setErrorMessage(PDEUIMessages.TargetDefinitionContentPage_7); } else { setErrorMessage(null); setMessage(PDEUIMessages.TargetDefinitionContentPage_2); } getTargetDefinition().setName(name); setPageComplete(isPageComplete()); } }); TabFolder tabs = new TabFolder(comp, SWT.NONE); tabs.setLayoutData(new GridData(GridData.FILL_BOTH)); tabs.setFont(comp.getFont()); fLocationTab = new TabItem(tabs, SWT.NONE); fLocationTab.setText(PDEUIMessages.LocationSection_0); Composite pluginTabContainer = SWTFactory.createComposite(tabs, 1, 1, GridData.FILL_BOTH); SWTFactory.createWrapLabel( pluginTabContainer, PDEUIMessages.TargetDefinitionContentPage_LocationDescription, 2, 400); fLocationTree = TargetLocationsGroup.createInDialog(pluginTabContainer); fLocationTab.setControl(pluginTabContainer); PlatformUI.getWorkbench() .getHelpSystem() .setHelp(pluginTabContainer, IHelpContextIds.EDIT_TARGET_WIZARD_LOCATIONS_TAB); TabItem contentTab = new TabItem(tabs, SWT.NONE); contentTab.setText(PDEUIMessages.TargetDefinitionContentPage_6); Composite contentTabContainer = SWTFactory.createComposite(tabs, 1, 1, GridData.FILL_BOTH); SWTFactory.createWrapLabel(contentTabContainer, PDEUIMessages.ContentSection_1, 2, 400); fContentTree = TargetContentsGroup.createInDialog(contentTabContainer); contentTab.setControl(contentTabContainer); PlatformUI.getWorkbench() .getHelpSystem() .setHelp(contentTabContainer, IHelpContextIds.EDIT_TARGET_WIZARD_CONTENT_TAB); TabItem envTab = new TabItem(tabs, SWT.NONE); envTab.setText(PDEUIMessages.TargetDefinitionEnvironmentPage_3); Composite envTabContainer = SWTFactory.createComposite(tabs, 1, 1, GridData.FILL_BOTH); createTargetEnvironmentGroup(envTabContainer); createJREGroup(envTabContainer); envTab.setControl(envTabContainer); PlatformUI.getWorkbench() .getHelpSystem() .setHelp(envTabContainer, IHelpContextIds.EDIT_TARGET_WIZARD_ENVIRONMENT_TAB); TabItem argsTab = new TabItem(tabs, SWT.NONE); argsTab.setText(PDEUIMessages.TargetDefinitionEnvironmentPage_4); argsTab.setControl(createArgumentsGroup(tabs)); PlatformUI.getWorkbench() .getHelpSystem() .setHelp(argsTab.getControl(), IHelpContextIds.EDIT_TARGET_WIZARD_ARGUMENT_TAB); TabItem depTab = new TabItem(tabs, SWT.NONE); depTab.setText(PDEUIMessages.TargetDefinitionEnvironmentPage_5); depTab.setControl(createImplicitTabContents(tabs)); PlatformUI.getWorkbench() .getHelpSystem() .setHelp(depTab.getControl(), IHelpContextIds.EDIT_TARGET_WIZARD_IMPLICIT_TAB); PlatformUI.getWorkbench().getHelpSystem().setHelp(comp, IHelpContextIds.EDIT_TARGET_WIZARD); initializeListeners(); targetChanged(getTargetDefinition()); setControl(comp); }