/trunk/org.mwc.asset.NetAsset2/src/org/mwc/asset/netasset2/connect/VConnect.java

https://bitbucket.org/haris_peco/debrief · Java · 417 lines · 347 code · 47 blank · 23 comment · 10 complexity · e592cf1b8c5fc06e85932e8a0dea9b3d MD5 · raw file

  1. package org.mwc.asset.netasset2.connect;
  2. import java.net.InetAddress;
  3. import java.util.Iterator;
  4. import java.util.Vector;
  5. import org.eclipse.jface.viewers.DoubleClickEvent;
  6. import org.eclipse.jface.viewers.IBaseLabelProvider;
  7. import org.eclipse.jface.viewers.IContentProvider;
  8. import org.eclipse.jface.viewers.IDoubleClickListener;
  9. import org.eclipse.jface.viewers.ISelection;
  10. import org.eclipse.jface.viewers.ListViewer;
  11. import org.eclipse.jface.viewers.StructuredSelection;
  12. import org.eclipse.jface.viewers.TableViewer;
  13. import org.eclipse.jface.viewers.TableViewerColumn;
  14. import org.eclipse.swt.SWT;
  15. import org.eclipse.swt.events.SelectionAdapter;
  16. import org.eclipse.swt.events.SelectionEvent;
  17. import org.eclipse.swt.events.SelectionListener;
  18. import org.eclipse.swt.widgets.Button;
  19. import org.eclipse.swt.widgets.Composite;
  20. import org.eclipse.swt.widgets.Display;
  21. import org.eclipse.swt.widgets.Group;
  22. import org.eclipse.swt.widgets.Label;
  23. import org.eclipse.swt.widgets.List;
  24. import org.eclipse.swt.widgets.Table;
  25. import org.eclipse.swt.widgets.TableColumn;
  26. import org.mwc.asset.netCore.common.Network;
  27. import org.mwc.asset.netCore.common.Network.LightParticipant;
  28. import org.mwc.asset.netCore.common.Network.LightScenario;
  29. public class VConnect extends Composite implements IVConnect
  30. {
  31. private final Table partTable;
  32. private final Button btnPing;
  33. private final ListViewer listServerViewer;
  34. private final ListViewer listScenarioViewer;
  35. private final List listServers;
  36. private final List listScenarios;
  37. private final TableViewer partViewer;
  38. private final Button btnDisconnect;
  39. // private Button btnManual;
  40. private final StringProvider _stringProvider;
  41. private final Button btnSelfHost;
  42. /**
  43. * Create the composite.
  44. *
  45. * @param parent
  46. * @param style
  47. * @param stringProvider
  48. */
  49. public VConnect(final Composite parent, final int style)
  50. {
  51. this(parent, style, null);
  52. }
  53. public VConnect(final Composite parent, final int style, final StringProvider stringProvider)
  54. {
  55. super(parent, style);
  56. _stringProvider = stringProvider;
  57. setLayout(null);
  58. final Group grpConnection = new Group(this, SWT.NONE);
  59. grpConnection.setBounds(0, 0, 260, 225);
  60. final Label lblServers = new Label(grpConnection, SWT.NONE);
  61. lblServers.setBounds(10, 27, 59, 14);
  62. lblServers.setText("Servers");
  63. btnPing = new Button(grpConnection, SWT.FLAT);
  64. btnPing.setBounds(10, 3, 47, 21);
  65. btnPing.setText("Ping");
  66. final Label lblScenarios = new Label(grpConnection, SWT.NONE);
  67. lblScenarios.setText("Scenarios");
  68. lblScenarios.setBounds(106, 27, 59, 14);
  69. final Label lblParticipants = new Label(grpConnection, SWT.NONE);
  70. lblParticipants.setText("Participants");
  71. lblParticipants.setBounds(10, 113, 67, 14);
  72. partViewer = new TableViewer(grpConnection, SWT.BORDER | SWT.FULL_SELECTION);
  73. partTable = partViewer.getTable();
  74. partTable.setBounds(10, 129, 240, 81);
  75. final TableViewerColumn nameCol = new TableViewerColumn(partViewer, SWT.NONE);
  76. final TableColumn colName = nameCol.getColumn();
  77. colName.setWidth(50);
  78. colName.setText("Name");
  79. final TableViewerColumn catCol = new TableViewerColumn(partViewer, SWT.NONE);
  80. final TableColumn colCategory = catCol.getColumn();
  81. colCategory.setWidth(100);
  82. colCategory.setText("Category");
  83. final TableViewerColumn actCol = new TableViewerColumn(partViewer, SWT.NONE);
  84. final TableColumn colActivity = actCol.getColumn();
  85. colActivity.setWidth(100);
  86. colActivity.setText("Activity");
  87. listServerViewer = new ListViewer(grpConnection, SWT.BORDER | SWT.V_SCROLL);
  88. listServers = listServerViewer.getList();
  89. listServers.setBounds(10, 41, 100, 66);
  90. listScenarioViewer = new ListViewer(grpConnection, SWT.BORDER
  91. | SWT.V_SCROLL);
  92. listScenarios = listScenarioViewer.getList();
  93. listScenarios.setBounds(116, 41, 130, 66);
  94. btnDisconnect = new Button(grpConnection, SWT.FLAT);
  95. btnDisconnect.setText("Disconnect");
  96. btnDisconnect.setBounds(171, 10, 79, 31);
  97. btnSelfHost = new Button(grpConnection, SWT.CHECK);
  98. btnSelfHost.setBounds(76, 5, 79, 18);
  99. btnSelfHost.setText("Self host");
  100. // btnManual = new Button(grpConnection, SWT.FLAT);
  101. // btnManual.setBounds(63, 3, 67, 21);
  102. // btnManual.setText("Manual");
  103. }
  104. @Override
  105. protected void checkSubclass()
  106. {
  107. // Disable the check that prevents subclassing of SWT components
  108. }
  109. @Override
  110. public void addManualListener(final ClickHandler handler)
  111. {
  112. // btnManual.addSelectionListener(new SelectionListener()
  113. // {
  114. // public void widgetSelected(SelectionEvent e)
  115. // {
  116. // handler.clicked();
  117. // }
  118. //
  119. // public void widgetDefaultSelected(SelectionEvent e)
  120. // {
  121. // }
  122. // });
  123. }
  124. @Override
  125. public void addPingListener(final ClickHandler handler)
  126. {
  127. btnPing.addSelectionListener(new SelectionListener()
  128. {
  129. public void widgetSelected(final SelectionEvent e)
  130. {
  131. handler.clicked();
  132. }
  133. public void widgetDefaultSelected(final SelectionEvent e)
  134. {
  135. }
  136. });
  137. }
  138. @Override
  139. public void addDisconnectListener(final ClickHandler handler)
  140. {
  141. btnDisconnect.addSelectionListener(new SelectionListener()
  142. {
  143. public void widgetSelected(final SelectionEvent e)
  144. {
  145. handler.clicked();
  146. }
  147. public void widgetDefaultSelected(final SelectionEvent e)
  148. {
  149. }
  150. });
  151. }
  152. @Override
  153. public void addServerListener(final ServerSelected listener)
  154. {
  155. listServerViewer.addDoubleClickListener(new IDoubleClickListener()
  156. {
  157. public void doubleClick(final DoubleClickEvent event)
  158. {
  159. final ISelection sel = event.getSelection();
  160. final StructuredSelection ss = (StructuredSelection) sel;
  161. final InetAddress address = (InetAddress) ss.getFirstElement();
  162. listener.selected(address);
  163. }
  164. });
  165. }
  166. @Override
  167. public void disableServers()
  168. {
  169. Display.getDefault().asyncExec(new Runnable()
  170. {
  171. @Override
  172. public void run()
  173. {
  174. if (!listServers.isDisposed())
  175. listServers.setEnabled(false);
  176. }
  177. });
  178. }
  179. @Override
  180. public void enableServers()
  181. {
  182. Display.getDefault().asyncExec(new Runnable()
  183. {
  184. @Override
  185. public void run()
  186. {
  187. if (!listServers.isDisposed())
  188. listServers.setEnabled(true);
  189. }
  190. });
  191. }
  192. @Override
  193. public void disableScenarios()
  194. {
  195. Display.getDefault().asyncExec(new Runnable()
  196. {
  197. @Override
  198. public void run()
  199. {
  200. if (!listScenarios.isDisposed())
  201. listScenarios.setEnabled(false);
  202. }
  203. });
  204. }
  205. @Override
  206. public void enableScenarios()
  207. {
  208. Display.getDefault().asyncExec(new Runnable()
  209. {
  210. @Override
  211. public void run()
  212. {
  213. if (!listScenarios.isDisposed())
  214. listScenarios.setEnabled(true);
  215. }
  216. });
  217. }
  218. @Override
  219. public void addScenarioListener(final ScenarioSelected listener)
  220. {
  221. listScenarioViewer.addDoubleClickListener(new IDoubleClickListener()
  222. {
  223. public void doubleClick(final DoubleClickEvent event)
  224. {
  225. final ISelection sel = event.getSelection();
  226. final StructuredSelection ss = (StructuredSelection) sel;
  227. final LightScenario scenario = (LightScenario) ss.getFirstElement();
  228. listener.selected(scenario);
  229. }
  230. });
  231. }
  232. @Override
  233. public void setPartContentProvider(final IContentProvider provider)
  234. {
  235. partViewer.setContentProvider(provider);
  236. }
  237. @Override
  238. public void setPartLabelProvider(final IBaseLabelProvider labelProvider)
  239. {
  240. partViewer.setLabelProvider(labelProvider);
  241. }
  242. @Override
  243. public void addParticipantListener(final ParticipantSelected listener)
  244. {
  245. partViewer.addDoubleClickListener(new IDoubleClickListener()
  246. {
  247. public void doubleClick(final DoubleClickEvent event)
  248. {
  249. final ISelection sel = event.getSelection();
  250. final StructuredSelection ss = (StructuredSelection) sel;
  251. final LightParticipant part = (LightParticipant) ss.getFirstElement();
  252. listener.selected(part);
  253. }
  254. });
  255. }
  256. @Override
  257. public void setParticipants(final Vector<LightParticipant> listOfParticipants)
  258. {
  259. Display.getDefault().asyncExec(new Runnable()
  260. {
  261. @Override
  262. public void run()
  263. {
  264. partViewer.setInput(listOfParticipants);
  265. }
  266. });
  267. }
  268. @Override
  269. public void setScenarios(final Vector<LightScenario> results)
  270. {
  271. Display.getDefault().asyncExec(new Runnable()
  272. {
  273. @Override
  274. public void run()
  275. {
  276. listScenarioViewer.getList().removeAll();
  277. final Iterator<LightScenario> items = results.iterator();
  278. while (items.hasNext())
  279. {
  280. final Network.LightScenario ls = (Network.LightScenario) items.next();
  281. listScenarioViewer.add(ls);
  282. }
  283. }
  284. });
  285. }
  286. @Override
  287. public void setServers(final java.util.List<InetAddress> adds)
  288. {
  289. Display.getDefault().asyncExec(new Runnable()
  290. {
  291. @Override
  292. public void run()
  293. {
  294. final Iterator<InetAddress> items = adds.iterator();
  295. while (items.hasNext())
  296. {
  297. final InetAddress inetAddress = (InetAddress) items.next();
  298. listServerViewer.add(inetAddress);
  299. }
  300. }
  301. });
  302. }
  303. @Override
  304. public void disableParticipants()
  305. {
  306. Display.getDefault().asyncExec(new Runnable()
  307. {
  308. @Override
  309. public void run()
  310. {
  311. if (!partTable.isDisposed())
  312. partTable.setEnabled(false);
  313. }
  314. });
  315. }
  316. @Override
  317. public void enableParticipants()
  318. {
  319. Display.getDefault().asyncExec(new Runnable()
  320. {
  321. @Override
  322. public void run()
  323. {
  324. if (!partTable.isDisposed())
  325. partTable.setEnabled(true);
  326. }
  327. });
  328. }
  329. @Override
  330. public void enableDisconnect()
  331. {
  332. if (!btnDisconnect.isDisposed())
  333. btnDisconnect.setEnabled(true);
  334. }
  335. @Override
  336. public void disableDisconnect()
  337. {
  338. if (!btnDisconnect.isDisposed())
  339. btnDisconnect.setEnabled(false);
  340. }
  341. @Override
  342. public String getString(final String title, final String message)
  343. {
  344. return _stringProvider.getString(title, message);
  345. }
  346. @Override
  347. public void addSelfHostListener(final BooleanHandler handler)
  348. {
  349. btnSelfHost.addSelectionListener(new SelectionAdapter()
  350. {
  351. @Override
  352. public void widgetSelected(final SelectionEvent e)
  353. {
  354. handler.change(btnSelfHost.getSelection());
  355. }
  356. });
  357. }
  358. @Override
  359. public void clearServers()
  360. {
  361. Display.getDefault().asyncExec(new Runnable()
  362. {
  363. @Override
  364. public void run()
  365. {
  366. listServerViewer.getList().removeAll();
  367. }
  368. });
  369. }
  370. }