// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.designer.core.ui.editor.properties.controllers.uidialog.tns; import java.io.File; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.talend.designer.core.i18n.Messages; /** * * rshi class global comment. Detailled comment */ public class TnsEditorDialog extends Dialog { private File tnsFile; private TnsInfo tnsInfo; TreeViewer treeViewer; public TnsEditorDialog(Shell parentShell, File tnsFile) { super(parentShell); this.tnsFile = tnsFile; this.setShellStyle(getShellStyle() | SWT.RESIZE); } @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.FINISH_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } @Override protected Control createDialogArea(Composite parent) { TnsParser tnsparser = new TnsParser(tnsFile); treeViewer = new TreeViewer(parent); Tree tree = treeViewer.getTree(); tree.setHeaderVisible(true); tree.setLinesVisible(true); GridData layoutData = new GridData(GridData.FILL_BOTH); layoutData.heightHint = 400; layoutData.widthHint = 300; tree.setLayoutData(layoutData); TreeColumn column1st = new TreeColumn(tree, SWT.NONE); column1st.setText(Messages.getString("TnsEditorDialog.Service")); //$NON-NLS-1$ column1st.setWidth(200); TreeColumn column2nd = new TreeColumn(tree, SWT.NONE); column2nd.setText(Messages.getString("TnsEditorDialog.Value")); //$NON-NLS-1$ column2nd.setWidth(200); treeViewer.setContentProvider(new TnsContentProvider()); treeViewer.setLabelProvider(new TnsTableProvider()); treeViewer.setInput(tnsparser.getTree()); treeViewer.expandAll(); treeViewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { okPressed(); } }); return tree; } public TnsInfo getTnsInfo() { return tnsInfo; } @Override protected void okPressed() { if (treeViewer.getSelection().isEmpty()) { MessageBox box = new MessageBox(Display.getCurrent().getActiveShell(), SWT.ICON_WARNING | SWT.OK); box.setText("WARNING"); //$NON-NLS-1$ box.setMessage("Please select a Item."); //$NON-NLS-1$ box.open(); return; } else { setDBConnectionUseTnsFile(); } } private void setDBConnectionUseTnsFile() { TnsNodeModel rootNode = (TnsNodeModel) ((TreeSelection) treeViewer.getSelection()).getFirstElement(); if (rootNode.getLevel() == 1) { tnsInfo = new TnsInfo(); if (rootNode.findChildByName("HOST") != null) { //$NON-NLS-1$ tnsInfo.setHost(rootNode.findChildByName("HOST").getValue()); //$NON-NLS-1$ } if (rootNode.findChildByName("PORT") != null) { //$NON-NLS-1$ tnsInfo.setPort(rootNode.findChildByName("PORT").getValue()); //$NON-NLS-1$ } if (rootNode.findChildByName("SID") != null) { //$NON-NLS-1$ tnsInfo.setConnectionType("ORACLE_SID"); //$NON-NLS-1$ tnsInfo.setDbName(rootNode.findChildByName("SID").getValue()); //$NON-NLS-1$ } if (rootNode.findChildByName("SERVICE_NAME") != null) { //$NON-NLS-1$ tnsInfo.setConnectionType("ORACLE_SERVICE_NAME"); //$NON-NLS-1$ tnsInfo.setDbName(rootNode.findChildByName("SERVICE_NAME").getValue()); //$NON-NLS-1$ } super.okPressed(); } else if (rootNode.getLevel() != 1) { MessageBox box = new MessageBox(Display.getCurrent().getActiveShell(), SWT.ICON_WARNING | SWT.OK); box.setText("WARNING"); //$NON-NLS-1$ box.setMessage("Please select a root Item."); //$NON-NLS-1$ box.open(); return; } } }