use of org.talend.commons.runtime.service.ComponentsInstallComponent in project tdi-studio-se by Talend.
the class ComponentsPreferencePage method performOk.
@Override
public boolean performOk() {
boolean flag = super.performOk();
String newPath = CodeGeneratorActivator.getDefault().getPreferenceStore().getString(IComponentPreferenceConstant.USER_COMPONENTS_FOLDER);
if ("".equals(oldPath)) {
//$NON-NLS-1$
oldPath = null;
}
if ("".equals(newPath)) {
//$NON-NLS-1$
newPath = null;
}
DesignerPlugin.getDefault().getPreferenceStore().setValue(TalendDesignerPrefConstants.COMPONENT_ASSIST, enableComponentAssistCheckBoxField.getBooleanValue());
TalendEditorComponentCreationUtil.updateAssistListener();
if (this.oldPath != newPath) {
final IRunnableWithProgress runnable = new IRunnableWithProgress() {
@Override
public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
//$NON-NLS-1$
monitor.beginTask("Loading user component ......", 100);
Display display = Display.getCurrent();
if (display == null) {
display = Display.getDefault();
}
if (display != null) {
display.syncExec(new Runnable() {
@Override
public void run() {
// install the new components via P2
ComponentsInstallComponent component = LocalComponentInstallHelper.getComponent();
if (component != null) {
String newPath = CodeGeneratorActivator.getDefault().getPreferenceStore().getString(IComponentPreferenceConstant.USER_COMPONENTS_FOLDER);
if (newPath != null && StringUtils.isNotEmpty(newPath.trim())) {
File componentFolder = new File(newPath.trim());
if (componentFolder.exists()) {
try {
component.setComponentFolder(componentFolder);
if (component.install()) {
String installedMessages = component.getInstalledMessages();
//$NON-NLS-1$
String title = Messages.getString("ComponentsPreferencePage_SuccessTitle");
if (component.needRelaunch()) {
String warningMessage = Messages.getString(//$NON-NLS-1$
"ComponentsPreferencePage_SuccessMessage1") + //$NON-NLS-1$
Messages.getString("ComponentsPreferencePage_SuccessMessage2");
boolean confirm = MessageDialog.openConfirm(getShell(), title, installedMessages + '\n' + '\n' + warningMessage);
if (confirm) {
PlatformUI.getWorkbench().restart();
}
} else {
MessageDialog.openInformation(getShell(), title, installedMessages);
}
}
} finally {
// after install, clear the setting for service.
component.setComponentFolder(null);
}
}
}
}
// components will be reloaded when refreshTemplates;
// IComponentsFactory components = ComponentsFactoryProvider.getInstance();
// components.loadUserComponentsFromComponentsProviderExtension();
CorePlugin.getDefault().getLibrariesService().resetModulesNeeded();
monitor.worked(50);
// ComponentUtilities.updatePalette();
ICodeGeneratorService service = (ICodeGeneratorService) GlobalServiceRegister.getDefault().getService(ICodeGeneratorService.class);
service.refreshTemplates();
}
});
}
}
};
final ProgressMonitorDialog dialog = new ProgressMonitorDialog(null);
try {
dialog.run(true, true, runnable);
} catch (InvocationTargetException e) {
ExceptionHandler.process(e);
} catch (InterruptedException e) {
ExceptionHandler.process(e);
}
this.oldPath = newPath;
}
return flag;
}
Aggregations