Merge branch 'master' into lttng_2_0_control_dev
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / control / dialogs / NewConnectionDialog.java
CommitLineData
eb1bab5b
BH
1/**********************************************************************
2 * Copyright (c) 2012 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12package org.eclipse.linuxtools.lttng.ui.views.control.dialogs;
13
14import java.util.Arrays;
15
16import org.eclipse.jface.dialogs.Dialog;
17import org.eclipse.jface.dialogs.IDialogConstants;
18import org.eclipse.jface.dialogs.MessageDialog;
19import org.eclipse.linuxtools.lttng.ui.LTTngUiPlugin;
20import org.eclipse.linuxtools.lttng.ui.views.control.Messages;
21import org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent;
22import org.eclipse.rse.core.model.IHost;
23import org.eclipse.swt.SWT;
24import org.eclipse.swt.custom.CCombo;
25import org.eclipse.swt.events.SelectionEvent;
26import org.eclipse.swt.events.SelectionListener;
27import org.eclipse.swt.graphics.Point;
28import org.eclipse.swt.layout.GridData;
29import org.eclipse.swt.layout.GridLayout;
30import org.eclipse.swt.widgets.Button;
31import org.eclipse.swt.widgets.Composite;
32import org.eclipse.swt.widgets.Control;
33import org.eclipse.swt.widgets.Group;
34import org.eclipse.swt.widgets.Label;
35import org.eclipse.swt.widgets.Shell;
36import org.eclipse.swt.widgets.Text;
37
38/**
39 * <b><u>NewConnectionDialog</u></b>
40 * <p>
41 * Dialog box for connection information.
42 * </p>
43 */
44public class NewConnectionDialog extends Dialog implements INewConnectionDialog {
45
46 // ------------------------------------------------------------------------
47 // Constants
48 // ------------------------------------------------------------------------
49 /**
50 * The icon file for this dialog box.
51 */
52 public static final String TARGET_NEW_CONNECTION_ICON_FILE = "icons/elcl16/target_add.gif"; //$NON-NLS-1$
53
54 // ------------------------------------------------------------------------
55 // Attributes
56 // ------------------------------------------------------------------------
57 /**
58 * The dialog composite.
59 */
60 private Composite fDialogComposite = null;
61 /**
62 * The Group for the host combo box.
63 */
64 private Group fComboGroup = null;
65 /**
66 * The Group for the text input.
67 */
68 private Group fTextGroup = null;
69 /**
70 * The host combo box.
71 */
72 private CCombo fExistingHostsCombo = null;
73 /**
4775bcbf 74 * The check box button for enabling/disabling the text input.
eb1bab5b
BH
75 */
76 private Button fButton = null;
77 /**
78 * The text widget for the node name (alias)
79 */
bbb3538a 80 private Text fConnectionNameText = null;
eb1bab5b
BH
81 /**
82 * The text widget for the node address (IP or DNS name)
83 */
bbb3538a 84 private Text fHostNameText = null;
eb1bab5b
BH
85 /**
86 * The parent where the new node should be added.
87 */
88 private ITraceControlComponent fParent;
89 /**
90 * The node name (alias) string.
91 */
bbb3538a 92 private String fConnectionName = null;
eb1bab5b
BH
93 /**
94 * The node address (IP or DNS name) string.
95 */
bbb3538a 96 private String fHostName = null;
eb1bab5b
BH
97
98 /**
99 * Input list of existing RSE hosts available for selection.
100 */
101 private IHost[] fExistingHosts = new IHost[0];
102
103 // ------------------------------------------------------------------------
104 // Constructors
105 // ------------------------------------------------------------------------
106 public NewConnectionDialog(Shell shell, ITraceControlComponent parent, IHost[] hosts) {
107 super(shell);
108 fParent = parent;
109 if (hosts != null) {
110 fExistingHosts = Arrays.copyOf(hosts, hosts.length);
111 }
498704b3 112 setShellStyle(SWT.RESIZE);
eb1bab5b
BH
113 }
114
115 // ------------------------------------------------------------------------
116 // Accessors
117 // ------------------------------------------------------------------------
118 /*
119 * (non-Javadoc)
bbb3538a 120 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.INewConnectionDialog#getConnectionName()
eb1bab5b
BH
121 */
122 @Override
bbb3538a
BH
123 public String getConnectionName() {
124 return fConnectionName;
eb1bab5b
BH
125 }
126
127 /*
128 * (non-Javadoc)
bbb3538a 129 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.INewConnectionDialog#getHostName()
eb1bab5b
BH
130 */
131 @Override
bbb3538a
BH
132 public String getHostName() {
133 return fHostName;
eb1bab5b
BH
134 }
135
136 // ------------------------------------------------------------------------
137 // Operations
138 // ------------------------------------------------------------------------
139 /*
140 * (non-Javadoc)
141 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
142 */
143 @Override
144 protected void configureShell(Shell newShell) {
145 super.configureShell(newShell);
146 newShell.setText(Messages.TraceControl_NewDialogTitle);
147 newShell.setImage(LTTngUiPlugin.getDefault().loadIcon(TARGET_NEW_CONNECTION_ICON_FILE));
148 }
149
150 /*
151 * (non-Javadoc)
152 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
153 */
154 @Override
155 protected Control createDialogArea(Composite parent) {
156
157 // Main dialog panel
158 fDialogComposite = new Composite(parent, SWT.NONE);
159 GridLayout layout = new GridLayout(1, true);
498704b3
BH
160 fDialogComposite.setLayout(layout);
161 fDialogComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
eb1bab5b
BH
162
163 // Existing connections group
164 fComboGroup = new Group(fDialogComposite, SWT.SHADOW_NONE);
4775bcbf 165 fComboGroup.setText(Messages.TraceControl_NewNodeExistingConnectionGroupName);
eb1bab5b
BH
166 layout = new GridLayout(2, true);
167 fComboGroup.setLayout(layout);
498704b3 168 GridData data = new GridData(GridData.FILL_HORIZONTAL);
eb1bab5b
BH
169 fComboGroup.setLayoutData(data);
170
171 fExistingHostsCombo = new CCombo(fComboGroup, SWT.READ_ONLY);
172 fExistingHostsCombo.setToolTipText(Messages.TraceControl_NewNodeComboToolTip);
498704b3 173 fExistingHostsCombo.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
eb1bab5b
BH
174
175 String items[] = new String[fExistingHosts.length];
176 for (int i = 0; i < items.length; i++) {
177 items[i] = String.valueOf(fExistingHosts[i].getAliasName() + " - " + fExistingHosts[i].getHostName()); //$NON-NLS-1$
178 }
179
180 fExistingHostsCombo.setItems(items);
181 fExistingHostsCombo.setEnabled(fExistingHosts.length > 0);
182
183 // Node information grop
184 fTextGroup = new Group(fDialogComposite, SWT.SHADOW_NONE);
498704b3 185 layout = new GridLayout(3, true);
eb1bab5b 186 fTextGroup.setLayout(layout);
498704b3 187 data = new GridData(GridData.FILL_HORIZONTAL);
eb1bab5b
BH
188 fTextGroup.setLayoutData(data);
189
190 fButton = new Button(fTextGroup, SWT.CHECK);
498704b3 191 fButton.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 3, 1));
eb1bab5b
BH
192 fButton.setText(Messages.TraceControl_NewNodeEditButtonName);
193 fButton.setEnabled(fExistingHosts.length > 0);
194
bbb3538a
BH
195 Label connectionNameLabel = new Label(fTextGroup, SWT.RIGHT);
196 connectionNameLabel.setText(Messages.TraceControl_NewNodeConnectionNameLabel);
197 fConnectionNameText = new Text(fTextGroup, SWT.NONE);
198 fConnectionNameText.setToolTipText(Messages.TraceControl_NewNodeConnectionNameTooltip);
199 fConnectionNameText.setEnabled(fExistingHosts.length == 0);
eb1bab5b 200
bbb3538a
BH
201 Label hostNameLabel = new Label(fTextGroup, SWT.RIGHT);
202 hostNameLabel.setText(Messages.TraceControl_NewNodeHostNameLabel);
203 fHostNameText = new Text(fTextGroup, SWT.NONE);
204 fHostNameText.setToolTipText(Messages.TraceControl_NewNodeHostNameTooltip);
205 fHostNameText.setEnabled(fExistingHosts.length == 0);
eb1bab5b
BH
206
207 fButton.addSelectionListener(new SelectionListener() {
208 @Override
209 public void widgetSelected(SelectionEvent e) {
210 if (fButton.getSelection()) {
211 fExistingHostsCombo.deselectAll();
212 fExistingHostsCombo.setEnabled(false);
bbb3538a
BH
213 fConnectionNameText.setEnabled(true);
214 fHostNameText.setEnabled(true);
eb1bab5b
BH
215 } else {
216 fExistingHostsCombo.setEnabled(true);
bbb3538a
BH
217 fConnectionNameText.setEnabled(false);
218 fHostNameText.setEnabled(false);
eb1bab5b
BH
219 }
220 }
221
222 @Override
223 public void widgetDefaultSelected(SelectionEvent e) {
224 }
225 });
226
227 fExistingHostsCombo.addSelectionListener(new SelectionListener() {
228 @Override
229 public void widgetSelected(SelectionEvent e) {
230 int index = fExistingHostsCombo.getSelectionIndex();
bbb3538a
BH
231 fConnectionNameText.setText(fExistingHosts[index].getAliasName());
232 fHostNameText.setText(fExistingHosts[index].getHostName());
eb1bab5b
BH
233 }
234
235 @Override
236 public void widgetDefaultSelected(SelectionEvent e) {
237 }
238 });
239
240 // layout widgets
498704b3 241 data = new GridData(GridData.FILL_HORIZONTAL);
bbb3538a
BH
242 fHostNameText.setText("666.666.666.666"); //$NON-NLS-1$
243 Point minSize = fHostNameText.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
eb1bab5b 244 data.widthHint = minSize.x + 5;
498704b3 245 data.horizontalSpan = 2;
eb1bab5b 246
bbb3538a
BH
247 fConnectionNameText.setLayoutData(data);
248 fHostNameText.setLayoutData(data);
eb1bab5b 249
bbb3538a 250 fHostNameText.setText(""); //$NON-NLS-1$
eb1bab5b
BH
251
252 return fDialogComposite;
253 }
254
255 /*
256 * (non-Javadoc)
257 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
258 */
259 @Override
260 protected void createButtonsForButtonBar(Composite parent) {
261 createButton(parent, IDialogConstants.OK_ID, "&Ok", true); //$NON-NLS-1$
262 }
263
264 /*
265 * (non-Javadoc)
266 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
267 */
268 @Override
269 protected void okPressed() {
270 // Validate input data
bbb3538a
BH
271 fConnectionName = fConnectionNameText.getText();
272 fHostName = fHostNameText.getText();
eb1bab5b 273
bbb3538a 274 if (!"".equals(fHostName)) { //$NON-NLS-1$
eb1bab5b 275 // If no node name is specified use the node address as name
bbb3538a
BH
276 if ("".equals(fConnectionName)) { //$NON-NLS-1$
277 fConnectionName = fHostName;
eb1bab5b
BH
278 }
279 // Check if node with name already exists in parent
bbb3538a 280 if(fParent.containsChild(fConnectionName)) {
eb1bab5b
BH
281 MessageDialog.openError(getShell(),
282 Messages.TraceControl_NewDialogTitle,
bbb3538a 283 Messages.TraceControl_AlreadyExistsError + " (" + fConnectionName + ")"); //$NON-NLS-1$//$NON-NLS-2$
eb1bab5b
BH
284 return;
285 }
286 }
287 else {
288 return;
289 }
290 // validation successful -> call super.okPressed()
291 super.okPressed();
292 }
293}
This page took 0.039222 seconds and 5 git commands to generate.