Search in sources :

Example 31 with CTabFolder

use of org.eclipse.swt.custom.CTabFolder in project linuxtools by eclipse.

the class GraphDisplaySet method createPartControl.

/**
 * This method creates the framework for what will be displayed by this dialog box.
 * @param parent The composite that will contain all the elements from this dialog
 */
private void createPartControl(Composite parent) {
    parent.setLayout(new FormLayout());
    FormData data1 = new FormData();
    Composite cmpCoolBar = new Composite(parent, SWT.NONE);
    data1.left = new FormAttachment(0, 0);
    data1.top = new FormAttachment(0, 0);
    data1.right = new FormAttachment(100, 0);
    data1.bottom = new FormAttachment(0, 10);
    cmpCoolBar.setLayoutData(data1);
    FormData data2 = new FormData();
    data2.left = new FormAttachment(0, 0);
    data2.top = new FormAttachment(cmpCoolBar);
    data2.right = new FormAttachment(100, 0);
    data2.bottom = new FormAttachment(100, 0);
    Composite cmpGraph = new Composite(parent, SWT.NONE);
    cmpGraph.setLayoutData(data2);
    // This is for the tab view
    cmpGraph.setLayout(new FormLayout());
    folder = new CTabFolder(cmpGraph, SWT.NONE);
    FormData data = new FormData();
    data.top = new FormAttachment(0, 0);
    data.left = new FormAttachment(0, 0);
    data.right = new FormAttachment(100, 0);
    data.bottom = new FormAttachment(100, 0);
    folder.setLayoutData(data);
    listener = new ButtonClickListener();
    folder.addSelectionListener(listener);
    folder.addCTabFolder2Listener(new CTabFolder2Adapter() {

        @Override
        public void close(CTabFolderEvent e) {
            int selected = folder.indexOf((CTabItem) e.item) - 2;
            if (null != updater) {
                updater.removeUpdateListener(builders.get(selected));
            }
            builders.remove(selected);
        }
    });
    // This is a tab/button for opening new graphs
    CTabItem newGraph = new CTabItem(folder, SWT.NONE);
    // $NON-NLS-1$
    newGraph.setImage(AbstractUIPlugin.imageDescriptorFromPlugin(GraphingUIPlugin.PLUGIN_ID, "icons/actions/new_wiz.gif").createImage());
    // $NON-NLS-1$
    newGraph.setToolTipText(Localization.getString("GraphDisplaySet.CreateGraph"));
    // Tab containing the data table
    CTabItem item = new CTabItem(folder, SWT.NONE);
    // $NON-NLS-1$
    item.setText(Localization.getString("GraphDisplaySet.DataView"));
    Composite c = new Composite(folder, SWT.NONE);
    GridLayout grid = new GridLayout();
    grid.marginHeight = 0;
    grid.marginWidth = 0;
    c.setLayout(grid);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    DataGrid table = DataSetFactory.getDataGrid(c, dataSet);
    if (null != updater) {
        updater.addUpdateListener(table);
    }
    table.getControl().setLayoutData(gd);
    item.setControl(c);
    folder.setSelection(item);
    lastSelectedTab = 1;
}
Also used : FormLayout(org.eclipse.swt.layout.FormLayout) FormData(org.eclipse.swt.layout.FormData) CTabFolder(org.eclipse.swt.custom.CTabFolder) CTabFolder2Adapter(org.eclipse.swt.custom.CTabFolder2Adapter) GraphComposite(org.eclipse.linuxtools.systemtap.graphing.ui.widgets.GraphComposite) Composite(org.eclipse.swt.widgets.Composite) DataGrid(org.eclipse.linuxtools.systemtap.graphing.ui.datadisplay.DataGrid) CTabFolderEvent(org.eclipse.swt.custom.CTabFolderEvent) CTabItem(org.eclipse.swt.custom.CTabItem) GridLayout(org.eclipse.swt.layout.GridLayout) GridData(org.eclipse.swt.layout.GridData) FormAttachment(org.eclipse.swt.layout.FormAttachment)

Example 32 with CTabFolder

use of org.eclipse.swt.custom.CTabFolder in project linuxtools by eclipse.

the class GraphSelectorEditor method createPartControl.

/**
 * This method creates the framework for what will be displayed by this dialog box.
 * @param parent The composite that will contain all the elements from this dialog
 */
@Override
public void createPartControl(Composite parent) {
    FormData data2 = new FormData();
    data2.left = new FormAttachment(0, 0);
    data2.top = new FormAttachment(0, 0);
    data2.right = new FormAttachment(100, 0);
    data2.bottom = new FormAttachment(100, 0);
    Composite cmpGraph = new Composite(parent, SWT.NONE);
    cmpGraph.setLayoutData(data2);
    // This is for the tab view
    cmpGraph.setLayout(new FormLayout());
    // Create the folder for all of the script sets, so it takes up all of the parent composite
    scriptFolder = new CTabFolder(cmpGraph, SWT.NONE);
    FormData data = new FormData();
    data.top = new FormAttachment(0, 0);
    data.left = new FormAttachment(0, 0);
    data.right = new FormAttachment(100, 0);
    data.bottom = new FormAttachment(100, 0);
    scriptFolder.setLayoutData(data);
    scriptFolder.addCTabFolder2Listener(new CTabFolder2Adapter() {

        @Override
        public void close(CTabFolderEvent e) {
            displaySets.remove(scriptFolder.indexOf((CTabItem) e.item));
        }
    });
}
Also used : FormData(org.eclipse.swt.layout.FormData) FormLayout(org.eclipse.swt.layout.FormLayout) CTabFolder(org.eclipse.swt.custom.CTabFolder) CTabFolder2Adapter(org.eclipse.swt.custom.CTabFolder2Adapter) Composite(org.eclipse.swt.widgets.Composite) CTabFolderEvent(org.eclipse.swt.custom.CTabFolderEvent) FormAttachment(org.eclipse.swt.layout.FormAttachment)

Example 33 with CTabFolder

use of org.eclipse.swt.custom.CTabFolder in project linuxtools by eclipse.

the class ContainerLauncher method launch.

/**
 * Perform a launch of a command in a container and output stdout/stderr to
 * console.
 *
 * @param id
 *            - id of caller to use to distinguish console owner
 * @param listener
 *            - optional listener of the run console
 * @param connectionUri
 *            - the specified connection to use
 * @param image
 *            - the image to use
 * @param cmdList
 *            - command to run as list of String
 * @param workingDir
 *            - working directory or null
 * @param additionalDirs
 *            - additional directories to mount or null
 * @param origEnv
 *            - original environment if we are appending to our existing
 *            environment
 * @param envMap
 *            - map of environment variable settings
 * @param ports
 *            - ports to expose
 * @param keep
 *            - keep container after running
 * @param stdinSupport
 *            - true if stdin support is required, false otherwise
 * @param privilegedMode
 *            - true if privileged mode is required, false otherwise
 * @param labels
 *            - Map of labels for the container
 * @param seccomp
 *            - seccomp profile
 * @since 4.0
 */
public void launch(String id, IContainerLaunchListener listener, final String connectionUri, String image, List<String> cmdList, String workingDir, List<String> additionalDirs, Map<String, String> origEnv, Map<String, String> envMap, List<String> ports, boolean keep, boolean stdinSupport, boolean privilegedMode, Map<String, String> labels, String seccomp) {
    // $NON-NLS-1$
    final String LAUNCH_TITLE = "ContainerLaunch.title";
    // $NON-NLS-1$
    final String LAUNCH_EXITED_TITLE = "ContainerLaunchExited.title";
    final List<String> env = new ArrayList<>();
    env.addAll(toList(origEnv));
    env.addAll(toList(envMap));
    final Set<String> exposedPorts = new HashSet<>();
    final Map<String, List<IDockerPortBinding>> portBindingsMap = new HashMap<>();
    if (ports != null) {
        for (String port : ports) {
            port = port.trim();
            if (port.length() > 0) {
                // $NON-NLS-1$
                String[] segments = port.split(":");
                if (segments.length == 1) {
                    // containerPort
                    exposedPorts.add(segments[0]);
                    portBindingsMap.put(segments[0], Arrays.asList((IDockerPortBinding) new DockerPortBinding("", // $NON-NLS-1$ //$NON-NLS-2$
                    "")));
                } else if (segments.length == 2) {
                    // hostPort:containerPort
                    exposedPorts.add(segments[1]);
                    portBindingsMap.put(segments[1], Arrays.asList((IDockerPortBinding) new DockerPortBinding("", // $NON-NLS-1$ //$NON-NLS-2$
                    segments[0])));
                } else if (segments.length == 3) {
                    // either
                    // ip:hostPort:containerPort
                    // or ip::containerPort
                    exposedPorts.add(segments[1]);
                    if (segments[1].isEmpty()) {
                        portBindingsMap.put(segments[2], Arrays.asList((IDockerPortBinding) new DockerPortBinding("", // $NON-NLS-1$ //$NON-NLS-2$
                        segments[0])));
                    } else {
                        portBindingsMap.put(segments[2], Arrays.asList((IDockerPortBinding) new DockerPortBinding(segments[0], // $NON-NLS-1$ //$NON-NLS-2$
                        segments[1])));
                    }
                }
            }
        }
    }
    // Note we only pass volumes to the config if we have a
    // remote daemon. Local mounted volumes are passed
    // via the HostConfig binds setting
    DockerContainerConfig.Builder builder = new DockerContainerConfig.Builder().openStdin(stdinSupport).cmd(cmdList).image(image).workingDir(workingDir);
    // option
    if (listener != null && listener.getClass().getName().equals("org.eclipse.cdt.internal.docker.launcher.ContainerLaunchConfigurationDelegate$StartGdbServerJob")) {
        builder = builder.tty(true);
    }
    // add any exposed ports as needed
    if (exposedPorts.size() > 0)
        builder = builder.exposedPorts(exposedPorts);
    // add any labels if specified
    if (labels != null)
        builder = builder.labels(labels);
    if (!DockerConnectionManager.getInstance().hasConnections()) {
        Display.getDefault().syncExec(() -> MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), DVMessages.getString(ERROR_LAUNCHING_CONTAINER), DVMessages.getString(ERROR_NO_CONNECTIONS)));
        return;
    }
    // Try and use the specified connection that was used before,
    // otherwise, open an error
    final IDockerConnection connection = DockerConnectionManager.getInstance().getConnectionByUri(connectionUri);
    if (connection == null) {
        Display.getDefault().syncExec(() -> MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), DVMessages.getString(ERROR_LAUNCHING_CONTAINER), DVMessages.getFormattedString(ERROR_NO_CONNECTION_WITH_URI, connectionUri)));
        return;
    }
    // if connection is not open, force it to be by fetching images
    if (!connection.isOpen()) {
        connection.getImages();
    }
    DockerHostConfig.Builder hostBuilder = new DockerHostConfig.Builder().privileged(privilegedMode);
    // ptrace with gdbserver
    if (seccomp != null) {
        hostBuilder.securityOpt(seccomp);
    }
    final Map<String, String> remoteVolumes = new HashMap<>();
    if (!((DockerConnection) connection).isLocal()) {
        @SuppressWarnings("rawtypes") final Map<String, Map> volumes = new HashMap<>();
        // the host data over before starting.
        if (additionalDirs != null) {
            for (String dir : additionalDirs) {
                remoteVolumes.put(dir, dir);
                volumes.put(dir, new HashMap<>());
            }
        }
        if (workingDir != null) {
            // $NON-NLS-1$
            remoteVolumes.put(workingDir, workingDir);
            volumes.put(workingDir, new HashMap<>());
        }
        builder = builder.volumes(volumes);
    } else {
        // Running daemon on local host.
        // Add mounts for any directories we need to run the executable.
        // When we add mount points, we need entries of the form:
        // hostname:mountname:Z.
        // In our case, we want all directories mounted as-is so the
        // executable will run as the user expects.
        final List<String> volumes = new ArrayList<>();
        if (additionalDirs != null) {
            for (String dir : additionalDirs) {
                // $NON-NLS-1$ //$NON-NLS-2$
                volumes.add(dir + ":" + dir + ":Z");
            }
        }
        if (workingDir != null) {
            // $NON-NLS-1$ //$NON-NLS-2$
            volumes.add(workingDir + ":" + workingDir + ":Z");
        }
        hostBuilder = hostBuilder.binds(volumes);
    }
    final DockerContainerConfig config = builder.build();
    // add any port bindings if specified
    if (portBindingsMap.size() > 0)
        hostBuilder = hostBuilder.portBindings(portBindingsMap);
    final IDockerHostConfig hostConfig = hostBuilder.build();
    final String imageName = image;
    final boolean keepContainer = keep;
    final String consoleId = id;
    final IContainerLaunchListener containerListener = listener;
    Thread t = new Thread(() -> {
        // create the container
        String containerId = null;
        try {
            containerId = ((DockerConnection) connection).createContainer(config, hostConfig, null);
            if (!((DockerConnection) connection).isLocal()) {
                // data over from the host.
                if (!remoteVolumes.isEmpty()) {
                    CopyVolumesJob job = new CopyVolumesJob(remoteVolumes, connection, containerId);
                    job.schedule();
                    job.join();
                    if (job.getResult() != Status.OK_STATUS)
                        return;
                }
            }
            if (config.tty()) {
                // We need tty support to handle issue with Docker daemon
                // not always outputting in time (e.g. we might get an
                // output line after the process has exited which can be
                // too late to show or it might get displayed in a wrong
                // order in relation to other output. We also want the
                // output to ultimately show up in the Console View.
                OutputStream stream = null;
                RunConsole oldConsole = getConsole();
                final RunConsole rc = RunConsole.findConsole(containerId, consoleId);
                setConsole(rc);
                rc.clearConsole();
                if (oldConsole != null)
                    RunConsole.removeConsole(oldConsole);
                Display.getDefault().syncExec(() -> rc.setTitle(Messages.getFormattedString(LAUNCH_TITLE, new String[] { cmdList.get(0), imageName })));
                if (rc != null) {
                    stream = rc.getOutputStream();
                }
                // We want terminal support, but we want to output to the
                // RunConsole.
                // To do this, we create a DockerConsoleOutputStream which
                // we
                // hook into the TM Terminal via stdout and stderr output
                // listeners.
                // These listeners will output to the
                // DockerConsoleOutputStream which
                // will in turn output to the RunConsole. See
                // DockerConnection.openTerminal().
                DockerConsoleOutputStream out = new DockerConsoleOutputStream(stream);
                RunConsole.attachToTerminal(connection, containerId, out);
                if (containerListener != null) {
                    out.addConsoleListener(new RunConsoleListenerBridge(containerListener));
                }
                ((DockerConnection) connection).startContainer(containerId, null, null);
                IDockerContainerInfo info = ((DockerConnection) connection).getContainerInfo(containerId);
                if (containerListener != null) {
                    containerListener.containerInfo(info);
                }
                // Wait for the container to finish
                final IDockerContainerExit status = ((DockerConnection) connection).waitForContainer(containerId);
                Display.getDefault().syncExec(() -> {
                    rc.setTitle(Messages.getFormattedString(LAUNCH_EXITED_TITLE, new String[] { status.statusCode().toString(), cmdList.get(0), imageName }));
                    rc.showConsole();
                    // We used a TM Terminal to receive the output of the
                    // session and
                    // then sent the output to the RunConsole. Remove the
                    // terminal
                    // tab that got created now that we are finished and all
                    // data is shown
                    // in Console View.
                    IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                    IViewPart terminalView = page.findView("org.eclipse.tm.terminal.view.ui.TerminalsView");
                    CTabFolder ctabfolder = terminalView.getAdapter(CTabFolder.class);
                    if (ctabfolder != null) {
                        CTabItem[] items = ctabfolder.getItems();
                        for (CTabItem item : items) {
                            if (item.getText().endsWith(info.name())) {
                                item.dispose();
                                break;
                            }
                        }
                    }
                });
                // finished
                if (containerListener != null)
                    containerListener.done();
                if (!keepContainer) {
                    ((DockerConnection) connection).removeContainer(containerId);
                }
            } else {
                OutputStream stream = null;
                RunConsole oldConsole = getConsole();
                final RunConsole rc = RunConsole.findConsole(containerId, consoleId);
                setConsole(rc);
                rc.clearConsole();
                if (oldConsole != null)
                    RunConsole.removeConsole(oldConsole);
                Display.getDefault().syncExec(() -> rc.setTitle(Messages.getFormattedString(LAUNCH_TITLE, new String[] { cmdList.get(0), imageName })));
                // if (!rc.isAttached()) {
                rc.attachToConsole(connection, containerId);
                // }
                if (rc != null) {
                    stream = rc.getOutputStream();
                    if (containerListener != null) {
                        ((ConsoleOutputStream) stream).addConsoleListener(containerListener);
                    }
                }
                // Create a unique logging thread id which has container id
                // and console id
                String loggingId = containerId + "." + consoleId;
                ((DockerConnection) connection).startContainer(containerId, loggingId, stream);
                if (rc != null)
                    rc.showConsole();
                if (containerListener != null) {
                    IDockerContainerInfo info = ((DockerConnection) connection).getContainerInfo(containerId);
                    containerListener.containerInfo(info);
                }
                // Wait for the container to finish
                final IDockerContainerExit status = ((DockerConnection) connection).waitForContainer(containerId);
                Display.getDefault().syncExec(() -> {
                    rc.setTitle(Messages.getFormattedString(LAUNCH_EXITED_TITLE, new String[] { status.statusCode().toString(), cmdList.get(0), imageName }));
                    rc.showConsole();
                });
                // finished
                if (containerListener != null)
                    containerListener.done();
                if (!keepContainer) {
                    // Drain the logging thread before we remove the
                    // container (we need to use the logging id)
                    Thread.sleep(1000);
                    ((DockerConnection) connection).stopLoggingThread(loggingId);
                    // Look for any Display Log console that the user may
                    // have opened which would be
                    // separate and make sure it is removed as well
                    RunConsole rc2 = RunConsole.findConsole(((DockerConnection) connection).getContainer(containerId));
                    if (rc2 != null)
                        RunConsole.removeConsole(rc2);
                    ((DockerConnection) connection).removeContainer(containerId);
                }
            }
        } catch (final DockerException e2) {
            // error in creation, try and remove Container if possible
            if (!keepContainer && containerId != null) {
                try {
                    ((DockerConnection) connection).removeContainer(containerId);
                } catch (DockerException | InterruptedException e1) {
                // ignore exception
                }
            }
            Display.getDefault().syncExec(() -> MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), DVMessages.getFormattedString(ERROR_CREATING_CONTAINER, imageName), e2.getMessage()));
        } catch (InterruptedException e3) {
        // for now
        // do nothing
        }
        ((DockerConnection) connection).getContainers(true);
    });
    t.start();
}
Also used : IViewPart(org.eclipse.ui.IViewPart) CTabFolder(org.eclipse.swt.custom.CTabFolder) HashMap(java.util.HashMap) DockerConsoleOutputStream(org.eclipse.linuxtools.internal.docker.core.DockerConsoleOutputStream) ObjectOutputStream(java.io.ObjectOutputStream) OutputStream(java.io.OutputStream) ConsoleOutputStream(org.eclipse.linuxtools.internal.docker.ui.consoles.ConsoleOutputStream) FileOutputStream(java.io.FileOutputStream) ArrayList(java.util.ArrayList) IDockerHostConfig(org.eclipse.linuxtools.docker.core.IDockerHostConfig) IDockerContainerExit(org.eclipse.linuxtools.docker.core.IDockerContainerExit) CTabItem(org.eclipse.swt.custom.CTabItem) IDockerConnection(org.eclipse.linuxtools.docker.core.IDockerConnection) DockerConnection(org.eclipse.linuxtools.internal.docker.core.DockerConnection) RunConsole(org.eclipse.linuxtools.internal.docker.ui.consoles.RunConsole) IDockerPortBinding(org.eclipse.linuxtools.docker.core.IDockerPortBinding) IDockerConnection(org.eclipse.linuxtools.docker.core.IDockerConnection) List(java.util.List) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) IDockerHostConfig(org.eclipse.linuxtools.docker.core.IDockerHostConfig) DockerHostConfig(org.eclipse.linuxtools.internal.docker.core.DockerHostConfig) DockerException(org.eclipse.linuxtools.docker.core.DockerException) IDockerPortBinding(org.eclipse.linuxtools.docker.core.IDockerPortBinding) DockerPortBinding(org.eclipse.linuxtools.internal.docker.core.DockerPortBinding) DockerConsoleOutputStream(org.eclipse.linuxtools.internal.docker.core.DockerConsoleOutputStream) ConsoleOutputStream(org.eclipse.linuxtools.internal.docker.ui.consoles.ConsoleOutputStream) DockerContainerConfig(org.eclipse.linuxtools.internal.docker.core.DockerContainerConfig) IDockerContainerConfig(org.eclipse.linuxtools.docker.core.IDockerContainerConfig) IWorkbenchPage(org.eclipse.ui.IWorkbenchPage) IDockerContainerInfo(org.eclipse.linuxtools.docker.core.IDockerContainerInfo) Map(java.util.Map) HashMap(java.util.HashMap) DockerConsoleOutputStream(org.eclipse.linuxtools.internal.docker.core.DockerConsoleOutputStream)

Example 34 with CTabFolder

use of org.eclipse.swt.custom.CTabFolder in project eclipse.platform.swt by eclipse.

the class Bug515915_ScrolledCompositeCTabFolder method main.

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setSize(100, 150);
    CTabFolder tabFolder = new CTabFolder(shell, SWT.NONE);
    tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
    tabItem.setText("Tab");
    ScrolledComposite scroller = new ScrolledComposite(tabFolder, SWT.V_SCROLL | SWT.H_SCROLL);
    scroller.setExpandHorizontal(true);
    scroller.setExpandVertical(true);
    tabItem.setControl(scroller);
    Label label = new Label(scroller, SWT.NONE);
    label.setText("Label\n with\n a\n tall\n text\n string\n inside\n of\n it.");
    label.pack();
    scroller.setContent(label);
    scroller.setMinSize(label.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}
Also used : Shell(org.eclipse.swt.widgets.Shell) CTabFolder(org.eclipse.swt.custom.CTabFolder) GridData(org.eclipse.swt.layout.GridData) Label(org.eclipse.swt.widgets.Label) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) FillLayout(org.eclipse.swt.layout.FillLayout) CTabItem(org.eclipse.swt.custom.CTabItem) Display(org.eclipse.swt.widgets.Display)

Example 35 with CTabFolder

use of org.eclipse.swt.custom.CTabFolder in project eclipse.platform.swt by eclipse.

the class Test_org_eclipse_swt_custom_CTabFolder method reflection_shouldHighlight.

private static boolean reflection_shouldHighlight(CTabFolder partStackTabs) {
    String shouldHighlightMethodName = "shouldHighlight";
    Class<?> cTabFolderClass = CTabFolder.class;
    boolean shouldHighlightConsoleViewTab = false;
    try {
        Method method = cTabFolderClass.getDeclaredMethod(shouldHighlightMethodName);
        method.setAccessible(true);
        Object result = method.invoke(partStackTabs);
        Boolean shouldHighlight = (Boolean) result;
        shouldHighlightConsoleViewTab = shouldHighlight.booleanValue();
    } catch (Throwable t) {
        String message = "reflection call to " + cTabFolderClass.getName() + "." + shouldHighlightMethodName + "() failed";
        throw new AssertionError(message, t);
    }
    return shouldHighlightConsoleViewTab;
}
Also used : CTabFolder(org.eclipse.swt.custom.CTabFolder) Method(java.lang.reflect.Method)

Aggregations

CTabFolder (org.eclipse.swt.custom.CTabFolder)66 CTabItem (org.eclipse.swt.custom.CTabItem)36 GridData (org.eclipse.swt.layout.GridData)35 GridLayout (org.eclipse.swt.layout.GridLayout)27 Composite (org.eclipse.swt.widgets.Composite)26 SelectionEvent (org.eclipse.swt.events.SelectionEvent)18 FillLayout (org.eclipse.swt.layout.FillLayout)18 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)13 Label (org.eclipse.swt.widgets.Label)13 Point (org.eclipse.swt.graphics.Point)9 Shell (org.eclipse.swt.widgets.Shell)8 StyledText (org.eclipse.swt.custom.StyledText)7 SelectionListener (org.eclipse.swt.events.SelectionListener)7 Button (org.eclipse.swt.widgets.Button)7 SashForm (org.eclipse.swt.custom.SashForm)6 FormAttachment (org.eclipse.swt.layout.FormAttachment)6 FormData (org.eclipse.swt.layout.FormData)6 Text (org.eclipse.swt.widgets.Text)6 ToolBar (org.eclipse.swt.widgets.ToolBar)6 ToolItem (org.eclipse.swt.widgets.ToolItem)6