Java tutorial
// ============================================================================ // // Talend Community Edition // // Copyright (C) 2006-2013 Talend www.talend.com // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // // ============================================================================ package org.talend.designer.esb.runcontainer.core; import java.io.File; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.PlatformUI; import org.talend.designer.esb.runcontainer.preferences.RunContainerPreferenceInitializer; import org.talend.designer.esb.runcontainer.preferences.RunContainerPreferencePage; import org.talend.designer.esb.runcontainer.process.RunContainerProcessContextManager; import org.talend.designer.runprocess.IESBRunContainerService; import org.talend.designer.runprocess.RunProcessContext; import org.talend.designer.runprocess.RunProcessContextManager; import org.talend.designer.runprocess.RunProcessPlugin; import org.talend.designer.runprocess.ui.JobJvmComposite; import org.talend.designer.runprocess.ui.ProcessManager; import org.talend.designer.runprocess.ui.TargetExecComposite; /** * DOC yyan class global comment. Detailled comment <br/> * * $Id$ * */ public class LocalESBRunContainerService implements IESBRunContainerService { private static final String ESB_RUNTIME_ITEM = "ESB Runtime"; private RunProcessContext esbProcessContext; private RunProcessContextManager defaultContextManager; private RunContainerProcessContextManager runtimeContextManager; private int index = 0; @Override public void addRuntimeServer(TargetExecComposite targetExecComposite, JobJvmComposite jobComposite) { Combo targetCombo = null; IPreferenceStore store = ESBRunContainerPlugin.getDefault().getPreferenceStore(); String url = store.getString(RunContainerPreferenceInitializer.P_ESB_RUNTIME_HOST); String port = store.getString(RunContainerPreferenceInitializer.P_ESB_RUNTIME_PORT); String rt = ESB_RUNTIME_ITEM + " (" + url + ":" + port + ")"; if (JobJvmComposite.class == jobComposite.getClass()) { // Update Tab SE try { Control control = ((Composite) jobComposite.getChildren()[0]).getChildren()[0]; if (control instanceof StyledText) { StyledText styled = (StyledText) control; styled.setText("Please select target execution environment"); targetCombo = new Combo((Composite) jobComposite.getChildren()[0], SWT.BORDER | SWT.READ_ONLY); GridData data = new GridData(GridData.FILL_BOTH); data.horizontalIndent = 5; targetCombo.setLayoutData(data); targetCombo.add("Default", 0); targetCombo.add(rt, 1); this.index = targetCombo.getSelectionIndex(); targetCombo.select(index == -1 ? 0 : index); } } catch (Exception ex) { } } else { // Update EE tab try { Control control = ((Composite) jobComposite.getChildren()[0]).getChildren()[0]; if (control instanceof Combo) { targetCombo = (Combo) control; targetCombo.add(rt); this.index = targetCombo.getSelectionIndex(); } } catch (Exception ex) { } } if (targetCombo != null) { if (RunProcessPlugin.getDefault() .getRunProcessContextManager() instanceof RunContainerProcessContextManager) { targetCombo.select(targetCombo.indexOf(rt)); } else { targetCombo.select(index); } targetCombo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (((Combo) e.getSource()).getText().startsWith(ESB_RUNTIME_ITEM)) { // check if server setting is validated. IPreferenceStore store = ESBRunContainerPlugin.getDefault().getPreferenceStore(); String host = store.getString(RunContainerPreferenceInitializer.P_ESB_RUNTIME_HOST); File containerDir = new File( store.getString(RunContainerPreferenceInitializer.P_ESB_RUNTIME_LOCATION)); if (containerDir.exists() || !(host.equals("localhost") || host.equals("127.0.0.1"))) { defaultContextManager = RunProcessPlugin.getDefault().getRunProcessContextManager(); esbProcessContext = defaultContextManager.getActiveContext(); if (runtimeContextManager == null) { runtimeContextManager = new RunContainerProcessContextManager(); } // reset context manager and active process RunProcessPlugin.getDefault().setRunProcessContextManager(runtimeContextManager); RunProcessPlugin.getDefault().getRunProcessContextManager() .setActiveProcess(esbProcessContext.getProcess()); ProcessManager.getInstance() .setProcessContext(runtimeContextManager.getActiveContext()); } else { boolean openPrefs = MessageDialog.openConfirm(jobComposite.getShell(), "Runtime Server Setting", "Runtime Server setting is not complete, please update runtime server informations before running."); if (openPrefs) { PreferenceDialog d = new PreferenceDialog(jobComposite.getShell(), PlatformUI.getWorkbench().getPreferenceManager()); d.setSelectedNode(RunContainerPreferencePage.ID); d.open(); } // ((Combo) e.getSource()).select(index); } } else if (defaultContextManager != null) { RunProcessPlugin.getDefault().setRunProcessContextManager(defaultContextManager); } } }); } } @Override public boolean isESBProcessContextManager(RunProcessContextManager contextManager) { return contextManager instanceof RunContainerProcessContextManager; } }