public Object[] getElements(final Object parent) { final IBackend bk = getBackend(); if (bk == null) { return new OtpErlangObject[] {}; } bk.getEventDaemon().addHandler(handler); final OtpErlangList r = ErlideProclist.getProcessList(bk); if (r.arity() == 0) { return new OtpErlangObject[] {}; } final OtpErlangObject[] ss = new OtpErlangObject[r.elements().length]; for (int i = 0; i < r.elements().length; i++) { final OtpErlangTuple e = (OtpErlangTuple) r.elementAt(i); ss[i] = e; } return ss; }
/** This is a callback that will allow us to create the viewer and initialize it. */ @Override public void createPartControl(final Composite parent) { final Composite container = new Composite(parent, SWT.NONE); final GridLayout thisLayout = new GridLayout(2, false); container.setLayout(thisLayout); thisLayout.marginWidth = 5; thisLayout.marginHeight = 5; thisLayout.makeColumnsEqualWidth = false; thisLayout.verticalSpacing = 1; final Label label = new Label(container, SWT.SHADOW_NONE); label.setText("Erlang backend node"); backends = new ComboViewer(container, SWT.SINGLE | SWT.V_SCROLL); final Combo combo = backends.getCombo(); combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); backends.getControl().setSize(new org.eclipse.swt.graphics.Point(319, 18)); backends.setContentProvider(new BackendContentProvider()); backends.setLabelProvider(new BackendLabelProvider()); backends.setInput(BackendCore.getBackendManager()); viewer = new TableViewer(container, SWT.SINGLE | SWT.V_SCROLL | SWT.FULL_SELECTION); final Table table = viewer.getTable(); final GridData layoutData = new GridData(SWT.FILL, SWT.FILL, false, true, 2, 1); table.setLayoutData(layoutData); final Table t = (Table) viewer.getControl(); final TableColumn colPid = new TableColumn(t, SWT.LEAD); colPid.setText("Pid/Name"); colPid.setWidth(150); final TableColumn colStart = new TableColumn(t, SWT.LEAD); colStart.setText("Initial call"); colStart.setWidth(300); final TableColumn colReds = new TableColumn(t, SWT.LEAD); colReds.setText("Reds"); colReds.setWidth(80); final TableColumn colMsgs = new TableColumn(t, SWT.LEAD); colMsgs.setText("Msgs"); colMsgs.setWidth(60); viewer.setContentProvider(new ViewContentProvider()); viewer.setLabelProvider(new ViewLabelProvider()); // viewer.setSorter(new NameSorter()); viewer.setInput(getViewSite()); viewer.addDoubleClickListener( new IDoubleClickListener() { public void doubleClick(final DoubleClickEvent event) { doubleClickAction.run(); } }); t.setLinesVisible(true); t.setHeaderVisible(true); // TODO this is wrong - all backends should be inited final IRpcCallSite ideBackend = BackendCore.getBackendManager().getIdeBackend(); if (ideBackend != null) { ErlideProclist.processListInit(ideBackend); } BackendCore.getBackendManager() .forEachBackend( new IErlideBackendVisitor() { public void visit(final IBackend b) { ErlideProclist.processListInit(b); } }); makeActions(); hookContextMenu(); hookDoubleClickAction(); contributeToActionBars(); }