Source Code : Bug Tracker

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Bug Tracker

Bug Tracker

/*******************************************************************************
 * All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie
 * 
 * Created on Mar 3, 2004 7:53:44 PM by JACK $Id$
 *  
 ******************************************************************************/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
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.ToolBar;

public class BugTracker {
  Display display = new Display();
  Shell shell = new Shell(display);

  Table table;

  Image bugIcon = new Image(shell.getDisplay(), "java2s.gif");

  public BugTracker() {
    GridLayout gridLayout = new GridLayout();
    shell.setLayout(gridLayout);
    shell.setText("Bug Tracking System");

    // Action.
    Action actionAddNew = new Action("New bug") {
      public void run() {
          // Append.
  TableItem item = new TableItem(table, SWT.NULL);
        item.setImage(bugIcon);
        table.select(table.getItemCount() - 1);
      }
    };

    Action actionDelete = new Action("Delete selected") {
      public void run() {
        int index = table.getSelectionIndex();
        if (index < 0) {
          System.out.println("Please select an item first. ");
          return;
        }
        MessageBox messageBox = new MessageBox(shell, SWT.YES | SWT.NO);
        messageBox.setText("Confirmation");
        messageBox.setMessage(
          "Are you sure to remove the bug with id #"
            + table.getItem(index).getText(0));
        if (messageBox.open() == SWT.YES) {
          table.remove(index);
        }
      }
    };

    Action actionSave = new Action("Save") {
      public void run() {
        saveBugs();
      }
    };

    ToolBar toolBar = new ToolBar(shell, SWT.RIGHT | SWT.FLAT);

    ToolBarManager manager = new ToolBarManager(toolBar);
    manager.add(actionAddNew);
    manager.add(actionDelete);
    manager.add(new Separator());
    manager.add(actionSave);
    manager.update(true);

    table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
    table.setLayoutData(new GridData(GridData.FILL_BOTH));

    table.setLinesVisible(true);
    table.setHeaderVisible(true);

    TableColumn tcID = new TableColumn(table, SWT.LEFT);
    tcID.setText("ID");

    TableColumn tcSummary = new TableColumn(table, SWT.NULL);
    tcSummary.setText("Summary");

    TableColumn tcAssignedTo = new TableColumn(table, SWT.NULL);
    tcAssignedTo.setText("Assigned to");

    TableColumn tcSolved = new TableColumn(table, SWT.NULL);
    tcSolved.setText("Solved");

    tcID.setWidth(60);
    tcSummary.setWidth(200);
    tcAssignedTo.setWidth(80);
    tcSolved.setWidth(50);

    table.pack();

    // Table editor.
    final TableEditor editor = new TableEditor(table);

    table.addListener(SWT.MouseDown, new Listener() {
      public void handleEvent(Event event) {
        // Locate the cell position.
        Point point = new Point(event.x, event.y);
        final TableItem item = table.getItem(point);
        if (item == null)
          return;
        int column = -1;
        for (int i = 0; i < table.getColumnCount(); i++) {
          Rectangle rect = item.getBounds(i);
          if (rect.contains(point))
            column = i;
        }
        if (column != 3)
          return;

        // Cell position located, now open the table editor.

        final Button button = new Button(table, SWT.CHECK);
        button.setSelection(
          item.getText(column).equalsIgnoreCase("YES"));

        editor.horizontalAlignment = SWT.LEFT;
        editor.grabHorizontal = true;

        editor.setEditor(button, item, column);

        final int selectedColumn = column;
        Listener buttonListener = new Listener() {
          public void handleEvent(final Event e) {
            switch (e.type) {
              case SWT.FocusOut :
                item.setText(
                  selectedColumn,
                  button.getSelection() ? "YES" : "NO");
                button.dispose();
                break;
              case SWT.Traverse :
                switch (e.detail) {
                  case SWT.TRAVERSE_RETURN :
                    item.setText(
                      selectedColumn,
                      button.getSelection()
                        ? "YES"
                        : "NO");
                    //FALL THROUGH
                  case SWT.TRAVERSE_ESCAPE :
                    button.dispose();
                    e.doit = false;
                }
                break;
            }
          }
        };

        button.addListener(SWT.FocusOut, buttonListener);
        button.addListener(SWT.Traverse, buttonListener);

        button.setFocus();

      }
    });

    table.addListener(SWT.MouseDown, new Listener() {
      public void handleEvent(Event event) {
        // Locate the cell position.
        Point point = new Point(event.x, event.y);
        final TableItem item = table.getItem(point);
        if (item == null)
          return;
        int column = -1;
        for (int i = 0; i < table.getColumnCount(); i++) {
          Rectangle rect = item.getBounds(i);
          if (rect.contains(point))
            column = i;
        }
        if (column < 0 || column >= 3)
          return;

        // Cell position located, now open the table editor.

        final Text text = new Text(table, SWT.NONE);
        text.setText(item.getText(column));

        editor.horizontalAlignment = SWT.LEFT;
        editor.grabHorizontal = true;

        editor.setEditor(text, item, column);

        final int selectedColumn = column;
        Listener textListener = new Listener() {
          public void handleEvent(final Event e) {
            switch (e.type) {
              case SWT.FocusOut :
                item.setText(selectedColumn, text.getText());
                text.dispose();
                break;
              case SWT.Traverse :
                switch (e.detail) {
                  case SWT.TRAVERSE_RETURN :
                    item.setText(
                      selectedColumn,
                      text.getText());
                    //FALL THROUGH
                  case SWT.TRAVERSE_ESCAPE :
                    text.dispose();
                    e.doit = false;
                }
                break;
            }
          }
        };

        text.addListener(SWT.FocusOut, textListener);
        text.addListener(SWT.Traverse, textListener);

        text.setFocus();
      }

    });

    loadBugs();

    table.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event event) {
        System.out.println("Selected: " + table.getSelection()[0]);
      }
    });
    
    Listener sortListener = new Listener() {
      public void handleEvent(Event event) {
        if(! (event.widget instanceof TableColumn))
          return;
        TableColumn tc = (TableColumn)event.widget;
        sortTable(table, table.indexOf(tc));
        System.out.println("The table is sorted by column #" + table.indexOf(tc));
      }
    };
    
    for(int i=0; i<table.getColumnCount(); i++)
      ((TableColumn)table.getColumn(i)).addListener(SWT.Selection, sortListener);

    shell.pack();
    shell.open();
    //textUser.forceFocus();

    // Set up the event loop.
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        // If no more entries in event queue
        display.sleep();
      }
    }

    display.dispose();
  }
  
  /**
   * Sorts the given table by the specified column.
   * @param columnIndex
   */
  public static void sortTable(Table table, int columnIndex) {
    if(table == null || table.getColumnCount() <= 1)
      return;
    if(columnIndex < 0 || columnIndex >= table.getColumnCount())
      throw new IllegalArgumentException("The specified column does not exist. ");
    
    final int colIndex = columnIndex;
    Comparator comparator = new Comparator() {
      public int compare(Object o1, Object o2) {
        return ((TableItem)o1).getText(colIndex).compareTo(((TableItem)o2).getText(colIndex));
      }

      public boolean equals(Object obj) {
        return false;
      }
    };
    
    TableItem[] tableItems = table.getItems();
    Arrays.sort(tableItems, comparator);
    
    for(int i=0; i<tableItems.length; i++) {
      TableItem item = new TableItem(table, SWT.NULL);
      for(int j=0; j<table.getColumnCount(); j++) {
        item.setText(j, tableItems[i].getText(j));
        item.setImage(j, tableItems[i].getImage(j));
      }
      tableItems[i].dispose();
    }
  }

  private void saveBugs() {
    // Save bugs to a file.
    DataOutputStream out = null;
    try {
      File file = new File("bugs.dat");

      out = new DataOutputStream(new FileOutputStream(file));

      for (int i = 0; i < table.getItemCount(); i++) {
        TableItem item = table.getItem(i);
        out.writeUTF(item.getText(0));
        out.writeUTF(item.getText(1));
        out.writeUTF(item.getText(2));
        out.writeBoolean(item.getText(3).equalsIgnoreCase("YES"));
      }
    } catch (IOException ioe) {
      // Ignore.
    } finally {
      try {
        if (out != null)
          out.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

  private void loadBugs() {
    // Load bugs from a file.
    DataInputStream in = null;

    try {
      File file = new File("bugs.dat");
      if (!file.exists())
        return;
      in = new DataInputStream(new FileInputStream(file));

      while (true) {
        String id = in.readUTF();
        String summary = in.readUTF();
        String assignedTo = in.readUTF();
        boolean solved = in.readBoolean();

        TableItem item = new TableItem(table, SWT.NULL);
        item.setImage(bugIcon);
        item.setText(
          new String[] {
            id,
            summary,
            assignedTo,
            solved ? "Yes" : "No" });
      }

    } catch (IOException ioe) {
      // Ignore.

    } finally {
      try {
        if (in != null)
          in.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

  public static void main(String[] args) {
    new BugTracker();
  }
}
           
       

Thank with us