Search in sources :

Example 1 with ComponentsInstallComponent

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;
}
Also used : ProgressMonitorDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog) InvocationTargetException(java.lang.reflect.InvocationTargetException) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) ICodeGeneratorService(org.talend.designer.codegen.ICodeGeneratorService) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) ComponentsInstallComponent(org.talend.commons.runtime.service.ComponentsInstallComponent) File(java.io.File) Display(org.eclipse.swt.widgets.Display)

Aggregations

File (java.io.File)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 ProgressMonitorDialog (org.eclipse.jface.dialogs.ProgressMonitorDialog)1 IRunnableWithProgress (org.eclipse.jface.operation.IRunnableWithProgress)1 Display (org.eclipse.swt.widgets.Display)1 ComponentsInstallComponent (org.talend.commons.runtime.service.ComponentsInstallComponent)1 ICodeGeneratorService (org.talend.designer.codegen.ICodeGeneratorService)1