How to use gridlayout and griddata to design the UI?

Hi,
I am working on a UI and I am having hard time in using gridlayout and griddata in my code to position the progress bar.

Below is the code that I have and in this code, in the 3rd tab (//TAB3 CONTENT), I create a progress bar. But this bar is created on the left of the table. However, I would like to position the progress bar above the table and centered.

Can you please help me with that?

This is the Gui.java file:

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.events.ShellListener;


public class Gui {
    
    static ToolItem item1;
    static ToolItem item11;
    static ToolItem item111;
    static ToolItem item1111;
    static ToolItem item12;
    static ToolItem item13;
    static ToolItem item23;
    static CTabFolder folder;
    static ToolItem item2;
    static ToolItem item22;
    static ToolItem item222;
    static ToolItem item3;
    static ToolItem item33;
    static ToolItem item333;
    static ToolItem item3333;
    static ToolItem item33333;
    static ToolItem item333333;
    static ToolItem item3333333;
    static ToolItem item33333333;
    static Text txt;

    
    private static ToolBarListener toolBarListener = new ToolBarListener();
    static RWFile rwFile = new RWFile();
    static FileTree fileTree = new FileTree();
    static StringBuilder buffer; 
    
    
    public static void swichTabChecks() {
        folder.setSelection(1);
    }
    public static void swichTabResults() {
        folder.setSelection(2);
    }
    public static void swichTabFiles() {
        folder.setSelection(0);
    } 
    public static void readTxt(String file) {
        buffer = new StringBuilder();
        buffer.append(txt.getText() + "\r\n" + rwFile.readFromFile(file));
        String fileList = buffer.toString();
        
        txt.setText(fileList);
    }    
    public static void writeTxt(String file) {
        rwFile.writeToFile(txt.getText(), file);
    }    
    public static void clearTxt() {
        txt.setText("");
        txt.setText("Use the buttons above to select files/directories, changelists, or saved file. Or you can type a list of fully-qualified names \n******************************************************************************************************************************\r\n");
    } 
    public static void selectFileFolders() {
        fileTree.main(null);
        buffer = new StringBuilder();
        buffer.append(txt.getText() + "\r\n" + fileTree.getFileFolders());
        //System.out.println("FILES:" + fileTree.getFileFolders());
        String fileList = buffer.toString();
        txt.setText(fileList);
    } 
    
    

    
    public static void main(String[] args) {
        Display display = new Display();
        final Shell shell = new Shell(display);
        
        toolBarListener.setShell(shell,display);
                  
        shell.setText("Development Desktop Tool");
        shell.setLayout(new GridLayout());
        folder = new CTabFolder(shell, SWT.TOP);
        GridData data = new GridData(SWT.FILL, GridData.FILL, true, true, 3, 3);
        folder.setLayoutData(data);
        CTabItem cTabItem1 = new CTabItem(folder, SWT.NONE);
        cTabItem1.setText("Files");
        CTabItem cTabItem2 = new CTabItem(folder, SWT.NONE);
        cTabItem2.setText("Checks");
        CTabItem cTabItem3 = new CTabItem(folder, SWT.NONE);
        cTabItem3.setText("Results");
       
     // -----------here starts TAB 1 -------------------- 
        Image image_Folder = new Image(display, "folder.png");
        Image image_shape_triangle = new Image(display, "shape_triangle.png");
        Image image_document = new Image(display, "document.png");
        Image image_delete = new Image(display, "delete.png");
        Image image_floppy_disk = new Image(display, "floppy_disk.png");
        Image image_navigate_right = new Image(display, "navigate_right.png");
       
        Composite compTab1 = new Composite(folder, SWT.NULL);
        GridLayout gridLayout1 = new GridLayout(3, false);
        compTab1.setLayout(gridLayout1);
        //compTab1.setLayoutData(new GridData());
        
        Composite compTB1 = new Composite(compTab1, SWT.NULL);
        GridLayout gL1 = new GridLayout(6, false);
        gL1.marginLeft = 0; gL1.marginRight = 0; gL1.horizontalSpacing = 0;
        compTB1.setLayout(gL1);
        GridData sepGD1 = new GridData(GridData.FILL_HORIZONTAL); sepGD1.horizontalSpan = 3; 
        compTB1.setLayoutData(sepGD1);
        compTB1.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
        
                
        //1st group
        CustomToolbar custToolBar1 = new CustomToolbar(compTB1, SWT.FLAT, "Files");
        
        item1 = new ToolItem(custToolBar1.getToolBar(), SWT.NONE);
        item1.setImage(image_Folder); item1.setText("Select Files/Directories"); item1.setToolTipText("Select the files or the directory you want to analyze");
        item1.addListener(SWT.Selection, toolBarListener);
        
        item11 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
        item11.setImage(image_shape_triangle); item11.setText("Select Changelist"); item11.setToolTipText("Select the files in the changelist");
        item11.addListener(SWT.Selection, toolBarListener);
                
        item111 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
        item111.setImage(image_document); item111.setText("Select File List"); item111.setToolTipText("Select the file list");
        item111.addListener(SWT.Selection, toolBarListener);
        
        item1111 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
        item1111.setImage(image_delete); item1111.setText("Clear List"); item1111.setToolTipText("Delete the list of all files below");
        item1111.addListener(SWT.Selection, toolBarListener);
        
        //This is the separator
        Label verticalSepartor11 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD11 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor11.setLayoutData(sepGD11); verticalSepartor11.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
        //2nd group
        CustomToolbar custToolBar11 = new CustomToolbar(compTB1, SWT.FLAT, "Configuration");
        
        item12 = new ToolItem(custToolBar11.getToolBar(), SWT.NONE);
        item12.setImage(image_floppy_disk); item12.setText("Save"); item12.setToolTipText("Save the list of files below to text file for future reference");
        item12.addListener(SWT.Selection, toolBarListener);    
        
        
        //This is the separator
        Label verticalSepartor12 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD12 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor12.setLayoutData(sepGD12); verticalSepartor12.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
       
        //3rd group
        CustomToolbar custToolBar111 = new CustomToolbar(compTB1, SWT.FLAT, "Next Actions");
        
        item13 = new ToolItem(custToolBar111.getToolBar(), SWT.NONE);
        item13.setImage(image_navigate_right); item13.setText("Specify Checks"); item13.setToolTipText("Move to the next tab to select the list of checks");
        item13.addListener(SWT.Selection, toolBarListener);
        
        //This is the separator
        Label verticalSepartor13 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD13 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor13.setLayoutData(sepGD13); verticalSepartor13.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
        
        Label horSepartorTab1 = new Label(compTab1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
        GridData sepGridDataTab1 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab1.horizontalSpan = 3; 
        horSepartorTab1.setLayoutData(sepGridDataTab1);horSepartorTab1.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
               
        Composite compButtons1 = new Composite(compTab1, SWT.NULL);
        FillLayout fillLayout1 = new FillLayout();
        fillLayout1.type = SWT.HORIZONTAL;                  
        compButtons1.setLayout(fillLayout1);
       
        cTabItem1.setControl(compTab1);
        
// -----------here starts TAB 2 --------------------              
        Image image_folder_document = new Image(display, "folder_document.png");
        Image image_selection_delete_2 = new Image(display, "selection_delete_2.png");

        Composite compTab2 = new Composite(folder, SWT.NULL);
        GridLayout gridLayout2 = new GridLayout(2, false);
        compTab2.setLayout(gridLayout2);
        
        Composite compTB2 = new Composite(compTab2, SWT.NULL);
        GridLayout gL2 = new GridLayout(4, false);
        gL2.marginLeft = 0; gL2.marginRight = 0; gL2.horizontalSpacing = 0;
        compTB2.setLayout(gL2);
        GridData sepGD2 = new GridData(GridData.FILL_HORIZONTAL); sepGD2.horizontalSpan = 2; 
        compTB2.setLayoutData(sepGD2);
        compTB2.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
        
        
        //1st group
        CustomToolbar custToolBar2 = new CustomToolbar(compTB2, SWT.FLAT, "Configuration");  
     
        item2 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
        item2.setImage(image_folder_document); item2.setText("Load saved check list"); item2.setToolTipText("Load the saved list of checks if you saved from previous runs");
        item22 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
        item22.setImage(image_selection_delete_2); item22.setText("Unselect all"); item22.setToolTipText("Unselec all checks below");
        item222 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
        item222.setImage(image_floppy_disk); item222.setText("Save selections"); item222.setToolTipText("Save the list of checks to a XML file for future reference");
        
        //This is the separator
        Label verticalSepartor21 = new Label(compTB2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD21 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor21.setLayoutData(sepGD21); verticalSepartor21.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
            
        //2nd group
        CustomToolbar custToolBar22 = new CustomToolbar(compTB2, SWT.FLAT, "Next Actions");
                
        item23 = new ToolItem(custToolBar22.getToolBar(), SWT.PUSH);
        item23.setImage(image_navigate_right); item23.setText("Run checks"); item23.setToolTipText("Run the checks against the files you selected");
        item23.addListener(SWT.Selection, toolBarListener); 
              
        //This is the separator
        Label verticalSepartor22 = new Label(compTB2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD22 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor22.setLayoutData(sepGD22); verticalSepartor22.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
        
        Label horSepartorTab2 = new Label(compTab2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
        GridData sepGridDataTab2 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab2.horizontalSpan = 3; 
        horSepartorTab2.setLayoutData(sepGridDataTab2);horSepartorTab2.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
               
        Composite compButtons2 = new Composite(compTab2, SWT.NULL);
        FillLayout fillLayout2 = new FillLayout();
        fillLayout2.type = SWT.HORIZONTAL;                  
        compButtons2.setLayout(fillLayout2);
       
        cTabItem2.setControl(compTab2);
     // -----------here starts TAB 3 --------------------      
        Image image_breakpoint = new Image(display, "breakpoint.png");
        Image image_redo = new Image(display, "redo.png");
        Image image_gecko = new Image(display, "gecko.png");
        Image image_navigate_left2 = new Image(display, "navigate_left2_orange.png");
        Image image_exit = new Image(display, "exit.png");
        
        Composite compTab3 = new Composite(folder, SWT.NULL);
        GridLayout gridLayout3 = new GridLayout(3, false);
        compTab3.setLayout(gridLayout3);
        
        Composite compTB3 = new Composite(compTab3, SWT.NULL);
        GridLayout gL3 = new GridLayout(11, false);
        gL3.marginLeft = 0; gL3.marginRight = 0; gL3.horizontalSpacing = 0;
        compTB3.setLayout(gL3);
        GridData sepGD3 = new GridData(GridData.FILL_HORIZONTAL); sepGD3.horizontalSpan = 5; 
        compTB3.setLayoutData(sepGD3);
        compTB3.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
 
       
        //1st group
        CustomToolbar custToolBar3 = new CustomToolbar(compTB3, SWT.FLAT, "Configuration");   
       
        item3 = new ToolItem(custToolBar3.getToolBar(), SWT.PUSH);
        item3.setImage(image_floppy_disk); item3.setText("Save"); item3.setToolTipText("Save the list of files and checks to a XML file for future reference");
        item3.addListener(SWT.Selection, toolBarListener);

        //This is the separator
        Label verticalSepartor31 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD31 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor31.setLayoutData(sepGD31); verticalSepartor31.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
        //2nd group
        CustomToolbar custToolBar33 = new CustomToolbar(compTB3, SWT.FLAT, "Processing");             
        
        item33 = new ToolItem(custToolBar33.getToolBar(), SWT.PUSH);
        item33.setImage(image_breakpoint); item33.setText("Stop checks"); item33.setToolTipText("Stop running the checks");
        item33.addListener(SWT.Selection, toolBarListener);
        
        item333 = new ToolItem(custToolBar33.getToolBar(), SWT.PUSH);
        item333.setImage(image_redo); item333.setText("Rerun failed"); item333.setToolTipText("Rerun failed checks");
        item333.addListener(SWT.Selection, toolBarListener);

        //This is the separator
        Label verticalSepartor32 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD32 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor32.setLayoutData(sepGD32); verticalSepartor32.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
       
        
        //3rd group       
        CSFilteringCheckBoxes checkBoxes = new CSFilteringCheckBoxes(compTB3, SWT.FLAT);
        
        //This is the separator
        Label verticalSepartor33 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD33 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor33.setLayoutData(sepGD33); verticalSepartor33.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
        
        //4th group
        CustomToolbar custToolBar3333 = new CustomToolbar(compTB3, SWT.FLAT, "Results");
        
        item33333 = new ToolItem(custToolBar3333.getToolBar(), SWT.PUSH);
        item33333.setImage(image_floppy_disk); item33333.setText("Save results"); item33333.setToolTipText("Save the results to HTML or XML file");
        item33333.addListener(SWT.Selection, toolBarListener);       
        item333333 = new ToolItem(custToolBar3333.getToolBar(), SWT.PUSH);
        item333333.setImage(image_gecko); item333333.setText("Save to geck"); item333333.setToolTipText("Save the results to a geck. Geck number will be asked when you click this button");
        item333333.addListener(SWT.Selection, toolBarListener);
      
        //This is the separator
        Label verticalSepartor34 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD34 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor34.setLayoutData(sepGD34); verticalSepartor34.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
               
        //5th group
        CustomToolbar custToolBar33333 = new CustomToolbar(compTB3, SWT.FLAT, "Next Actions");      
    
        item3333333 = new ToolItem(custToolBar33333.getToolBar(), SWT.PUSH);
        item3333333.setImage(image_navigate_left2); item3333333.setText("Start over"); item3333333.setToolTipText("Go back to the first tab to start over");
        item3333333.addListener(SWT.Selection, toolBarListener);
        item33333333 = new ToolItem(custToolBar33333.getToolBar(), SWT.PUSH);
        item33333333.setImage(image_exit); item33333333.setText("Quit"); item33333333.setToolTipText("Quit the tool");
        item33333333.addListener(SWT.Selection, toolBarListener);
        
        //This is the separator
        Label verticalSepartor35 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
        GridData sepGD35 = new GridData(GridData.FILL_VERTICAL);
        verticalSepartor35.setLayoutData(sepGD35); verticalSepartor35.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
                              
        
        Composite compButtons3 = new Composite(compTab3, SWT.NULL);
        FillLayout fillLayout3 = new FillLayout();
        fillLayout3.type = SWT.HORIZONTAL;                  
        compButtons3.setLayout(fillLayout3);
       
        cTabItem3.setControl(compTab3);
       

        //This is the separator between the toolbar and the text box.
        Label horSepartorTab3 = new Label(compTab3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
        GridData sepGridDataTab3 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab3.horizontalSpan = 5; 
        horSepartorTab3.setLayoutData(sepGridDataTab3);horSepartorTab3.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        
        // -----------here ends ALL TAB MENUS -------------------- 
        
        //TAB1 CONTENT
        //This is the text box   
        GridLayout groupLayout = new GridLayout();
        GridData groupGD = new GridData(GridData.FILL_BOTH);
        Group groupText = new Group(compTab1, SWT.NONE);
        groupText.setLayout(groupLayout);
        groupText.setLayoutData(groupGD);
        groupText.setText("File List");
       
        GridData txtGridData = new GridData(GridData.FILL_BOTH);
        txt = new Text(groupText, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
        TxtFocusListener txtFL = new TxtFocusListener(compTab1);
        txt.setLayoutData(txtGridData);
        txt.addFocusListener(txtFL);
        txt.setText(TxtFocusListener.introText); txt.setForeground(compTab1.getDisplay().getSystemColor(SWT.COLOR_GRAY));
               
//#########################################################################################################################        
        
        //TAB2 CONTENT
        //This is the checks check box tree 
        GridData checksGridData2 = new GridData(GridData.FILL_BOTH);
        CheckListTree clt = new CheckListTree();
        clt.createCheckListTree(compTab2, checksGridData2);
 
//#########################################################################################################################
        
        //TAB3 CONTENT
        //This is the progress bar
        GridLayout progressBarGridLayout = new GridLayout();
        progressBarGridLayout.numColumns = 1;
        RunCheckProgressBar progressBar = new RunCheckProgressBar();
        GridData progressBarGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        progressBar.createProgressBar(compTab3, progressBarGridData);
        
        //This is the results table
        Table table = new Table(compTab3, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
        //GridData resultsGridData = new GridData(1, 100, false, false);
        table.setLayout(progressBarGridLayout);
        table.setHeaderVisible(true);
        String[] titles = { "Override", "Rerun", "Check/Error", "Filename", "Line" };
        
        for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
            TableColumn column = new TableColumn(table, SWT.NULL);
            column.setText(titles[loopIndex]);
            column.setWidth(80);
        }
        
        for (int loopIndex = 0; loopIndex < 20; loopIndex++) {
            TableItem item = new TableItem(table, SWT.NULL);
            item.setText(0, "yes");
            item.setText(1, "0");
            item.setText(2, "Spellcheck");
            item.setText(3, "filename" + loopIndex);
            item.setText(4, "50" + loopIndex*4);
            if (loopIndex % 2 == 0) item.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
         }
          
         for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
              table.getColumn(loopIndex).pack();
         }
          
         GridData data3 = new GridData(GridData.FILL_HORIZONTAL);
         data3.horizontalSpan = 2;
         table.setLayoutData(data3);
             
//########################################################################################################################
     
        shell.addShellListener(new ShellListener() {

            public void shellIconified(ShellEvent e) {
            }
            public void shellDeiconified(ShellEvent e) {
            }
            public void shellDeactivated(ShellEvent e) {
            }
            public void shellClosed(ShellEvent e) {
                System.out.println("Client Area: " + shell.getClientArea());
            }
            public void shellActivated(ShellEvent e) {
                int frameX = shell.getSize().x - shell.getClientArea().width;
                int frameY = shell.getSize().y - shell.getClientArea().height;
                shell.setSize(1200 + frameX, 1000 + frameY);
            }
        });
             
        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }
} 

Open in new window


And this is the progress bar code (RunCheckProgressBar.java):

import org.eclipse.swt.*;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

public class RunCheckProgressBar {

    public void createProgressBar(Composite compTab3, GridData progressBarGridLayout) {

        final ProgressBar bar = new ProgressBar (compTab3, SWT.SMOOTH);
        bar.setLayoutData(progressBarGridLayout);
        Rectangle clientArea = compTab3.getClientArea ();
        bar.setBounds (clientArea.x, clientArea.y, 200, 16);
        
        
//        compTab3.timerExec(100, new Runnable() {
//            int i = 0;
//            public void run() {
//                if (bar.isDisposed()) return;
//                bar.setSelection(i++);
//                if (i <= bar.getMaximum()) display.timerExec(100, this);
//            }
//        });

    }
} 

Open in new window

TolgarAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

StillUnAwareCommented:
I can recommend you the eclipse GUI builder plugin to solve nearly all layout problems: it's "Window Builder Pro"

As for your problem, when i stripped most of the code, the layout was correct

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.events.ShellListener;

class RunCheckProgressBar {

    public void createProgressBar(Composite compTab3, GridData progressBarGridLayout) {

        final ProgressBar bar = new ProgressBar (compTab3, SWT.SMOOTH);
        bar.setLayoutData(progressBarGridLayout);
        Rectangle clientArea = compTab3.getClientArea ();
        bar.setBounds (clientArea.x, clientArea.y, 200, 16);
        
        
//        compTab3.timerExec(100, new Runnable() {
//            int i = 0;
//            public void run() {
//                if (bar.isDisposed()) return;
//                bar.setSelection(i++);
//                if (i <= bar.getMaximum()) display.timerExec(100, this);
//            }
//        });

    }
} 


public class Gui {

	                                  
    
//    static ToolItem item1;
//    static ToolItem item11;
//    static ToolItem item111;
//    static ToolItem item1111;
//    static ToolItem item12;
//    static ToolItem item13;
//    static ToolItem item23;
    static CTabFolder folder;
//    static ToolItem item2;
//    static ToolItem item22;
//    static ToolItem item222;
//    static ToolItem item3;
//    static ToolItem item33;
//    static ToolItem item333;
//    static ToolItem item3333;
//    static ToolItem item33333;
//    static ToolItem item333333;
//    static ToolItem item3333333;
//    static ToolItem item33333333;
//    static Text txt;
//
//    
//    private static ToolBarListener toolBarListener = new ToolBarListener();
//    static RWFile rwFile = new RWFile();
//    static FileTree fileTree = new FileTree();
//    static StringBuilder buffer; 
//    
//    
//    public static void swichTabChecks() {
//        folder.setSelection(1);
//    }
//    public static void swichTabResults() {
//        folder.setSelection(2);
//    }
//    public static void swichTabFiles() {
//        folder.setSelection(0);
//    } 
//    public static void readTxt(String file) {
//        buffer = new StringBuilder();
//        buffer.append(txt.getText() + "\r\n" + rwFile.readFromFile(file));
//        String fileList = buffer.toString();
//        
//        txt.setText(fileList);
//    }    
//    public static void writeTxt(String file) {
//        rwFile.writeToFile(txt.getText(), file);
//    }    
//    public static void clearTxt() {
//        txt.setText("");
//        txt.setText("Use the buttons above to select files/directories, changelists, or saved file. Or you can type a list of fully-qualified names \n******************************************************************************************************************************\r\n");
//    } 
//    public static void selectFileFolders() {
//        fileTree.main(null);
//        buffer = new StringBuilder();
//        buffer.append(txt.getText() + "\r\n" + fileTree.getFileFolders());
//        //System.out.println("FILES:" + fileTree.getFileFolders());
//        String fileList = buffer.toString();
//        txt.setText(fileList);
//    } 
//    
//    

    
    public static void main(String[] args) {
        Display display = new Display();
        final Shell shell = new Shell(display);
        
//        toolBarListener.setShell(shell,display);
                  
        shell.setText("Development Desktop Tool");
        shell.setLayout(new GridLayout());
        folder = new CTabFolder(shell, SWT.TOP);
        GridData data = new GridData(SWT.FILL, GridData.FILL, true, true, 3, 3);
        folder.setLayoutData(data);
        CTabItem cTabItem1 = new CTabItem(folder, SWT.NONE);
        cTabItem1.setText("Files");
        CTabItem cTabItem2 = new CTabItem(folder, SWT.NONE);
        cTabItem2.setText("Checks");
        CTabItem cTabItem3 = new CTabItem(folder, SWT.NONE);
        cTabItem3.setText("Results");
       
//     // -----------here starts TAB 1 -------------------- 
//        Image image_Folder = new Image(display, "folder.png");
//        Image image_shape_triangle = new Image(display, "shape_triangle.png");
//        Image image_document = new Image(display, "document.png");
//        Image image_delete = new Image(display, "delete.png");
//        Image image_floppy_disk = new Image(display, "floppy_disk.png");
//        Image image_navigate_right = new Image(display, "navigate_right.png");
//       
//        Composite compTab1 = new Composite(folder, SWT.NULL);
//        GridLayout gridLayout1 = new GridLayout(3, false);
//        compTab1.setLayout(gridLayout1);
//        //compTab1.setLayoutData(new GridData());
//        
//        Composite compTB1 = new Composite(compTab1, SWT.NULL);
//        GridLayout gL1 = new GridLayout(6, false);
//        gL1.marginLeft = 0; gL1.marginRight = 0; gL1.horizontalSpacing = 0;
//        compTB1.setLayout(gL1);
//        GridData sepGD1 = new GridData(GridData.FILL_HORIZONTAL); sepGD1.horizontalSpan = 3; 
//        compTB1.setLayoutData(sepGD1);
//        compTB1.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
//        
//                
//        //1st group
//        CustomToolbar custToolBar1 = new CustomToolbar(compTB1, SWT.FLAT, "Files");
//        
//        item1 = new ToolItem(custToolBar1.getToolBar(), SWT.NONE);
//        item1.setImage(image_Folder); item1.setText("Select Files/Directories"); item1.setToolTipText("Select the files or the directory you want to analyze");
//        item1.addListener(SWT.Selection, toolBarListener);
//        
//        item11 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
//        item11.setImage(image_shape_triangle); item11.setText("Select Changelist"); item11.setToolTipText("Select the files in the changelist");
//        item11.addListener(SWT.Selection, toolBarListener);
//                
//        item111 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
//        item111.setImage(image_document); item111.setText("Select File List"); item111.setToolTipText("Select the file list");
//        item111.addListener(SWT.Selection, toolBarListener);
//        
//        item1111 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
//        item1111.setImage(image_delete); item1111.setText("Clear List"); item1111.setToolTipText("Delete the list of all files below");
//        item1111.addListener(SWT.Selection, toolBarListener);
//        
//        //This is the separator
//        Label verticalSepartor11 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD11 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor11.setLayoutData(sepGD11); verticalSepartor11.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//        //2nd group
//        CustomToolbar custToolBar11 = new CustomToolbar(compTB1, SWT.FLAT, "Configuration");
//        
//        item12 = new ToolItem(custToolBar11.getToolBar(), SWT.NONE);
//        item12.setImage(image_floppy_disk); item12.setText("Save"); item12.setToolTipText("Save the list of files below to text file for future reference");
//        item12.addListener(SWT.Selection, toolBarListener);    
//        
//        
//        //This is the separator
//        Label verticalSepartor12 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD12 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor12.setLayoutData(sepGD12); verticalSepartor12.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//       
//        //3rd group
//        CustomToolbar custToolBar111 = new CustomToolbar(compTB1, SWT.FLAT, "Next Actions");
//        
//        item13 = new ToolItem(custToolBar111.getToolBar(), SWT.NONE);
//        item13.setImage(image_navigate_right); item13.setText("Specify Checks"); item13.setToolTipText("Move to the next tab to select the list of checks");
//        item13.addListener(SWT.Selection, toolBarListener);
//        
//        //This is the separator
//        Label verticalSepartor13 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD13 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor13.setLayoutData(sepGD13); verticalSepartor13.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//        
//        Label horSepartorTab1 = new Label(compTab1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
//        GridData sepGridDataTab1 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab1.horizontalSpan = 3; 
//        horSepartorTab1.setLayoutData(sepGridDataTab1);horSepartorTab1.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//               
//        Composite compButtons1 = new Composite(compTab1, SWT.NULL);
//        FillLayout fillLayout1 = new FillLayout();
//        fillLayout1.type = SWT.HORIZONTAL;                  
//        compButtons1.setLayout(fillLayout1);
//       
//        cTabItem1.setControl(compTab1);
//        
//// -----------here starts TAB 2 --------------------              
//        Image image_folder_document = new Image(display, "folder_document.png");
//        Image image_selection_delete_2 = new Image(display, "selection_delete_2.png");
//
//        Composite compTab2 = new Composite(folder, SWT.NULL);
//        GridLayout gridLayout2 = new GridLayout(2, false);
//        compTab2.setLayout(gridLayout2);
//        
//        Composite compTB2 = new Composite(compTab2, SWT.NULL);
//        GridLayout gL2 = new GridLayout(4, false);
//        gL2.marginLeft = 0; gL2.marginRight = 0; gL2.horizontalSpacing = 0;
//        compTB2.setLayout(gL2);
//        GridData sepGD2 = new GridData(GridData.FILL_HORIZONTAL); sepGD2.horizontalSpan = 2; 
//        compTB2.setLayoutData(sepGD2);
//        compTB2.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
//        
//        
//        //1st group
//        CustomToolbar custToolBar2 = new CustomToolbar(compTB2, SWT.FLAT, "Configuration");  
//     
//        item2 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
//        item2.setImage(image_folder_document); item2.setText("Load saved check list"); item2.setToolTipText("Load the saved list of checks if you saved from previous runs");
//        item22 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
//        item22.setImage(image_selection_delete_2); item22.setText("Unselect all"); item22.setToolTipText("Unselec all checks below");
//        item222 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
//        item222.setImage(image_floppy_disk); item222.setText("Save selections"); item222.setToolTipText("Save the list of checks to a XML file for future reference");
//        
//        //This is the separator
//        Label verticalSepartor21 = new Label(compTB2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD21 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor21.setLayoutData(sepGD21); verticalSepartor21.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//            
//        //2nd group
//        CustomToolbar custToolBar22 = new CustomToolbar(compTB2, SWT.FLAT, "Next Actions");
//                
//        item23 = new ToolItem(custToolBar22.getToolBar(), SWT.PUSH);
//        item23.setImage(image_navigate_right); item23.setText("Run checks"); item23.setToolTipText("Run the checks against the files you selected");
//        item23.addListener(SWT.Selection, toolBarListener); 
//              
//        //This is the separator
//        Label verticalSepartor22 = new Label(compTB2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD22 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor22.setLayoutData(sepGD22); verticalSepartor22.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//        
//        Label horSepartorTab2 = new Label(compTab2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
//        GridData sepGridDataTab2 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab2.horizontalSpan = 3; 
//        horSepartorTab2.setLayoutData(sepGridDataTab2);horSepartorTab2.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//               
//        Composite compButtons2 = new Composite(compTab2, SWT.NULL);
//        FillLayout fillLayout2 = new FillLayout();
//        fillLayout2.type = SWT.HORIZONTAL;                  
//        compButtons2.setLayout(fillLayout2);
//       
//        cTabItem2.setControl(compTab2);
//     // -----------here starts TAB 3 --------------------      
//        Image image_breakpoint = new Image(display, "breakpoint.png");
//        Image image_redo = new Image(display, "redo.png");
//        Image image_gecko = new Image(display, "gecko.png");
//        Image image_navigate_left2 = new Image(display, "navigate_left2_orange.png");
//        Image image_exit = new Image(display, "exit.png");
//        
        Composite compTab3 = new Composite(folder, SWT.NULL);
        GridLayout gridLayout3 = new GridLayout(3, false);
        compTab3.setLayout(gridLayout3);
        
        Composite compTB3 = new Composite(compTab3, SWT.NULL);
        GridLayout gL3 = new GridLayout(11, false);
        gL3.marginLeft = 0; gL3.marginRight = 0; gL3.horizontalSpacing = 0;
        compTB3.setLayout(gL3);
        GridData sepGD3 = new GridData(GridData.FILL_HORIZONTAL); sepGD3.horizontalSpan = 5; 
        compTB3.setLayoutData(sepGD3);
        compTB3.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
// 
//       
//        //1st group
//        CustomToolbar custToolBar3 = new CustomToolbar(compTB3, SWT.FLAT, "Configuration");   
//       
//        item3 = new ToolItem(custToolBar3.getToolBar(), SWT.PUSH);
//        item3.setImage(image_floppy_disk); item3.setText("Save"); item3.setToolTipText("Save the list of files and checks to a XML file for future reference");
//        item3.addListener(SWT.Selection, toolBarListener);
//
//        //This is the separator
//        Label verticalSepartor31 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD31 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor31.setLayoutData(sepGD31); verticalSepartor31.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//        //2nd group
//        CustomToolbar custToolBar33 = new CustomToolbar(compTB3, SWT.FLAT, "Processing");             
//        
//        item33 = new ToolItem(custToolBar33.getToolBar(), SWT.PUSH);
//        item33.setImage(image_breakpoint); item33.setText("Stop checks"); item33.setToolTipText("Stop running the checks");
//        item33.addListener(SWT.Selection, toolBarListener);
//        
//        item333 = new ToolItem(custToolBar33.getToolBar(), SWT.PUSH);
//        item333.setImage(image_redo); item333.setText("Rerun failed"); item333.setToolTipText("Rerun failed checks");
//        item333.addListener(SWT.Selection, toolBarListener);
//
//        //This is the separator
//        Label verticalSepartor32 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD32 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor32.setLayoutData(sepGD32); verticalSepartor32.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//       
//        
//        //3rd group       
//        CSFilteringCheckBoxes checkBoxes = new CSFilteringCheckBoxes(compTB3, SWT.FLAT);
//        
//        //This is the separator
//        Label verticalSepartor33 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD33 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor33.setLayoutData(sepGD33); verticalSepartor33.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//        
//        //4th group
//        CustomToolbar custToolBar3333 = new CustomToolbar(compTB3, SWT.FLAT, "Results");
//        
//        item33333 = new ToolItem(custToolBar3333.getToolBar(), SWT.PUSH);
//        item33333.setImage(image_floppy_disk); item33333.setText("Save results"); item33333.setToolTipText("Save the results to HTML or XML file");
//        item33333.addListener(SWT.Selection, toolBarListener);       
//        item333333 = new ToolItem(custToolBar3333.getToolBar(), SWT.PUSH);
//        item333333.setImage(image_gecko); item333333.setText("Save to geck"); item333333.setToolTipText("Save the results to a geck. Geck number will be asked when you click this button");
//        item333333.addListener(SWT.Selection, toolBarListener);
//      
//        //This is the separator
//        Label verticalSepartor34 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD34 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor34.setLayoutData(sepGD34); verticalSepartor34.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//               
//        //5th group
//        CustomToolbar custToolBar33333 = new CustomToolbar(compTB3, SWT.FLAT, "Next Actions");      
//    
//        item3333333 = new ToolItem(custToolBar33333.getToolBar(), SWT.PUSH);
//        item3333333.setImage(image_navigate_left2); item3333333.setText("Start over"); item3333333.setToolTipText("Go back to the first tab to start over");
//        item3333333.addListener(SWT.Selection, toolBarListener);
//        item33333333 = new ToolItem(custToolBar33333.getToolBar(), SWT.PUSH);
//        item33333333.setImage(image_exit); item33333333.setText("Quit"); item33333333.setToolTipText("Quit the tool");
//        item33333333.addListener(SWT.Selection, toolBarListener);
//        
//        //This is the separator
//        Label verticalSepartor35 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
//        GridData sepGD35 = new GridData(GridData.FILL_VERTICAL);
//        verticalSepartor35.setLayoutData(sepGD35); verticalSepartor35.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//                              
//        
        Composite compButtons3 = new Composite(compTab3, SWT.NULL);
        FillLayout fillLayout3 = new FillLayout();
        fillLayout3.type = SWT.HORIZONTAL;                  
        compButtons3.setLayout(fillLayout3);
       
        cTabItem3.setControl(compTab3);
//       
//
//        //This is the separator between the toolbar and the text box.
//        Label horSepartorTab3 = new Label(compTab3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
//        GridData sepGridDataTab3 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab3.horizontalSpan = 5; 
//        horSepartorTab3.setLayoutData(sepGridDataTab3);horSepartorTab3.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//        
//        // -----------here ends ALL TAB MENUS -------------------- 
//        
//        //TAB1 CONTENT
//        //This is the text box   
//        GridLayout groupLayout = new GridLayout();
//        GridData groupGD = new GridData(GridData.FILL_BOTH);
//        Group groupText = new Group(compTab1, SWT.NONE);
//        groupText.setLayout(groupLayout);
//        groupText.setLayoutData(groupGD);
//        groupText.setText("File List");
//       
//        GridData txtGridData = new GridData(GridData.FILL_BOTH);
//        txt = new Text(groupText, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
//        TxtFocusListener txtFL = new TxtFocusListener(compTab1);
//        txt.setLayoutData(txtGridData);
//        txt.addFocusListener(txtFL);
//        txt.setText(TxtFocusListener.introText); txt.setForeground(compTab1.getDisplay().getSystemColor(SWT.COLOR_GRAY));
//               
////#########################################################################################################################        
//        
//        //TAB2 CONTENT
//        //This is the checks check box tree 
//        GridData checksGridData2 = new GridData(GridData.FILL_BOTH);
//        CheckListTree clt = new CheckListTree();
//        clt.createCheckListTree(compTab2, checksGridData2);
// 
////#########################################################################################################################
        
        //TAB3 CONTENT
        //This is the progress bar
        GridLayout progressBarGridLayout = new GridLayout();
        progressBarGridLayout.numColumns = 1;
        RunCheckProgressBar progressBar = new RunCheckProgressBar();
        GridData progressBarGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        progressBar.createProgressBar(compTab3, progressBarGridData);
        
        //This is the results table
        Table table = new Table(compTab3, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
        //GridData resultsGridData = new GridData(1, 100, false, false);
        table.setLayout(progressBarGridLayout);
        table.setHeaderVisible(true);
        String[] titles = { "Override", "Rerun", "Check/Error", "Filename", "Line" };
        
        for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
            TableColumn column = new TableColumn(table, SWT.NULL);
            column.setText(titles[loopIndex]);
            column.setWidth(80);
        }
        
        for (int loopIndex = 0; loopIndex < 20; loopIndex++) {
            TableItem item = new TableItem(table, SWT.NULL);
            item.setText(0, "yes");
            item.setText(1, "0");
            item.setText(2, "Spellcheck");
            item.setText(3, "filename" + loopIndex);
            item.setText(4, "50" + loopIndex*4);
            if (loopIndex % 2 == 0) item.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
         }
          
         for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
              table.getColumn(loopIndex).pack();
         }
          
         GridData data3 = new GridData(GridData.FILL_HORIZONTAL);
         data3.horizontalSpan = 2;
         table.setLayoutData(data3);
             
//########################################################################################################################
     
        shell.addShellListener(new ShellListener() {

            public void shellIconified(ShellEvent e) {
            }
            public void shellDeiconified(ShellEvent e) {
            }
            public void shellDeactivated(ShellEvent e) {
            }
            public void shellClosed(ShellEvent e) {
                System.out.println("Client Area: " + shell.getClientArea());
            }
            public void shellActivated(ShellEvent e) {
                int frameX = shell.getSize().x - shell.getClientArea().width;
                int frameY = shell.getSize().y - shell.getClientArea().height;
                shell.setSize(1200 + frameX, 1000 + frameY);
            }
        });
             
        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }
} 
                                  

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.