SWT (JFace) Small production Bugtracker_java programming

Source: Internet
Author: User
Tags arrays bug tracking system gettext pack static class
The code is as follows:


Implementation 1:


Bugtracker.java


Copy Code code as follows:



Package Swt_jface.demo6;


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 (), "c:/icons/bug.gif");


Public BugTracker () {


GridLayout GridLayout = new GridLayout ();


Shell.setlayout (gridLayout);


Shell.settext ("Bug tracking System");


Action actionaddnew = new Action ("New Bug") {


public void Run () {


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 a item A.");


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 ();


Final Tableeditor editor = new tableeditor (table);


Table.addlistener (SWT. MouseDown, New Listener () {


public void Handleevent (event event) {


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


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");


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) {


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


Final 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 ();





while (!shell.isdisposed ()) {


if (!display.readanddispatch ()) {


Display.sleep ();


}


}


Display.dispose ();


}


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 () {


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) {


finally {


try {


if (out!= null)


Out.close ();


catch (IOException e) {


E.printstacktrace ();


}


}


}


private void Loadbugs () {


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) {


finally {


try {


if (in!= null)


In.close ();


catch (IOException e) {


E.printstacktrace ();


}


}


}


public static void Main (string[] args) {


New BugTracker ();


}


}





Implementation 2:


Bugtrackerjface.java


Copy Code code as follows:



Package Swt_jface.demo6;


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.Vector;


Import org.eclipse.jface.action.Action;


Import Org.eclipse.jface.action.Separator;


Import Org.eclipse.jface.action.ToolBarManager;


Import Org.eclipse.jface.viewers.CellEditor;


Import Org.eclipse.jface.viewers.CheckboxCellEditor;


Import Org.eclipse.jface.viewers.ICellModifier;


Import Org.eclipse.jface.viewers.ILabelProviderListener;


Import Org.eclipse.jface.viewers.IStructuredContentProvider;


Import org.eclipse.jface.viewers.IStructuredSelection;


Import Org.eclipse.jface.viewers.ITableLabelProvider;


Import Org.eclipse.jface.viewers.TableViewer;


Import Org.eclipse.jface.viewers.TextCellEditor;


Import Org.eclipse.jface.viewers.Viewer;


Import Org.eclipse.jface.viewers.ViewerFilter;


Import Org.eclipse.jface.viewers.ViewerSorter;


Import Org.eclipse.swt.SWT;


Import Org.eclipse.swt.graphics.Image;


Import Org.eclipse.swt.layout.GridData;


Import Org.eclipse.swt.layout.GridLayout;


Import Org.eclipse.swt.widgets.Display;


Import org.eclipse.swt.widgets.Event;


Import Org.eclipse.swt.widgets.Item;


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.ToolBar;


public class Bugtrackerjface {


public static class Bug {





public String ID;


Public String Summary;


Public String AssignedTo;


public Boolean issolved;





Public Bug (string ID, string summary, String AssignedTo, Boolean issolved) {


This.id = ID;


This.summary = Summary;


This.assignedto = AssignedTo;


this.issolved = issolved;


}


public static Vector loadbugs (file file) {


Vector v = new vector ();


DataInputStream in = null;


try {


if (!file.exists ()) return V;


in = new DataInputStream (new FileInputStream (file));


while (true) {


String id = in.readutf ();


String summary = In.readutf ();


String AssignedTo = In.readutf ();


Boolean solved = In.readboolean ();


V.add (new Bug (ID, summary, assignedto, solved));


}


catch (IOException IoE) {


finally {


try {


if (in!= null)


In.close ();


catch (IOException e) {


E.printstacktrace ();


}


}


return v;


}


}





Display display = new display ();


Shell shell = new shell (display);


Table table;


Tableviewer Tableviewer;


Vector Bugs;


Image Bugicon = new Image (Shell.getdisplay (), "c:/icons/bug.gif");


string[] colnames = new string[]{"ID", "Summary", "Assigned to", "solved"};





Class Bugsorter extends Viewersorter {





Private String property;


private int propertyindex;





Public Bugsorter (String sortbyproperty) {


for (int i=0; i<colnames.length; i++) {


if (Colnames[i].equals (Sortbyproperty)) {


This.property = Sortbyproperty;


This.propertyindex = i;


Return


}


}


throw new IllegalArgumentException ("Unrecognized property:" + Sortbyproperty);


}


public int Compare (Viewer Viewer, Object e1, object E2) {





Bug Bug1 = (bug) E1;


Bug Bug2 = (bug) E2;





Switch (propertyindex) {


Case 0:


Return Bug1.id.compareTo (bug2.id);


Case 1:


Return Bug1.summary.compareTo (bug2.summary);


Case 2:


Return Bug1.assignedTo.compareTo (bug2.assignedto);


Case 3:


if (bug1.issolved = = bug2.issolved)


return 0;


if (bug1.issolved)


return 1;


Else


return-1;


Default


return 0;


}


}


}





Public Bugtrackerjface () {


Action actionaddnew = new Action ("New Bug") {


public void Run () {


Append.


Bug bug = new Bug ("", "", "", false);


Bugs.add (bug);


Tableviewer.refresh (FALSE);


}


};


Action Actiondelete = new Action ("Delete selected") {


public void Run () {


Istructuredselection selection = (istructuredselection) tableviewer.getselection ();


Bug bug = (bug) selection.getfirstelement ();


if (bug = null) {


SYSTEM.OUT.PRINTLN ("Please select a item A.");


Return


}


MessageBox MessageBox = new MessageBox (Shell, SWT. YES | swt.no);


Messagebox.settext ("confirmation");


Messagebox.setmessage (


"Are you sure to remove the bug with ID #"


+ bug.id);


if (messagebox.open () = SWT. YES) {


Bugs.remove (bug);


Tableviewer.refresh (FALSE);


}


}


};


Action Actionsave = new Action ("Save") {


public void Run () {


Savebugs (bugs);


}


};


Final Viewerfilter filter = new Viewerfilter () {


public Boolean Select (


Viewer Viewer,


Object parentelement,


Object Element) {


if (! ((Bug) Element). issolved)


return true;


return false;


}


};


Action actionshowunsolvedonly = new Action ("Show unsolved only") {


public void Run () {


if (! ischecked ())


Tableviewer.removefilter (filter);


Else


Tableviewer.addfilter (filter);


}


};


Actionshowunsolvedonly.setchecked (FALSE);


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.add (New Separator ());


Manager.add (actionshowunsolvedonly);


Manager.update (TRUE);


Shell.setlayout (New GridLayout ());


Table = new Table (Shell, SWT. BORDER | Swt. Full_selection);


TableColumn tcid = new TableColumn (table, SWT. left);


Tcid.settext (Colnames[0]);


TableColumn tcsummary = new TableColumn (table, SWT. NULL);


Tcsummary.settext (Colnames[1]);


TableColumn tcassignedto = new TableColumn (table, SWT. NULL);


Tcassignedto.settext (colnames[2]);


TableColumn tcsolved = new TableColumn (table, SWT. NULL);


Tcsolved.settext (Colnames[3]);


Tcid.setwidth (60);


Tcsummary.setwidth (200);


Tcassignedto.setwidth (80);


Tcsolved.setwidth (50);





Tableviewer = new tableviewer (table);


Tableviewer.gettable (). Setlinesvisible (True);


Tableviewer.gettable (). Setheadervisible (True);


Tableviewer.gettable (). Setlayoutdata (New Griddata (Griddata.fill_both));





Tableviewer.setcontentprovider (New Istructuredcontentprovider () {


Public object[] GetElements (Object inputelement) {


Vector v = (vector) inputelement;


return V.toarray ();


}


public void Dispose () {


System.out.println ("disposing ...");


}


public void inputchanged (


Viewer Viewer,


Object Oldinput,


Object newinput) {


System.out.println ("Input changed:old=" +


Oldinput + ", new=" + newinput);


}


});


Tableviewer.setlabelprovider (New Itablelabelprovider () {


Public Image Getcolumnimage (Object element, int columnindex) {


if (columnindex = 0)


return Bugicon;


return null;


}


Public String Getcolumntext (Object element, int columnindex) {


Bug bug = (bug) element;


Switch (columnindex) {


Case 0:


return bug.id;


Case 1:


return bug.summary;


Case 2:


return bug.assignedto;


Case 3:


Return bug.issolved? "YES": "NO";


}


return null;


}


public void AddListener (Ilabelproviderlistener listener) {


}


public void Dispose () {


}


public boolean Islabelproperty (Object element, String property) {


return false;


}


public void RemoveListener (Ilabelproviderlistener listener) {


}


});





Tableviewer.setcolumnproperties (colnames);





celleditor[] celleditors = new Celleditor[4];


Celleditors[0] = new textcelleditor (table);


CELLEDITORS[1] = celleditors[0];


CELLEDITORS[2] = celleditors[0];


CELLEDITORS[3] = new checkboxcelleditor (table);





Tableviewer.setcelleditors (celleditors);


Tableviewer.setcellmodifier (New Icellmodifier () {


public boolean canmodify (Object element, String property) {


return true;


}


public object GetValue (object element, String property) {


int index =-1;


for (int i=0; i<colnames.length; i++) {


if (Colnames[i].equals (property)) {


index = i;


Break


}


}


Bug bug = (bug) element;


Switch (index) {


Case 0:


return bug.id;


Case 1:


return bug.summary;


Case 2:


return bug.assignedto;


Case 3:


return new Boolean (bug.issolved);


}


return null;


}


public void Modify (object element, String, object value) {


System.out.println ("Modify:" + element + "," + Property + "," + value);


int index =-1;


for (int i=0; i<colnames.length; i++) {


if (Colnames[i].equals (property)) {


index = i;


Break


}


}


Bug bug = null;


if (element instanceof Item) {


Tableitem item = (tableitem) element;


Bug = (bug) item.getdata ();


}else{


Bug = (bug) element;


}


Switch (index) {


Case 0:


Bug.id = (String) value;


Break


Case 1:


Bug.summary = (String) value;


Break


Case 2:


Bug.assignedto = (String) value;


Break


Case 3:


bug.issolved = ((Boolean) value). Booleanvalue ();


Break


}


Tableviewer.update (bug, NULL);


}


});





Tcid.addlistener (SWT. Selection, New Listener () {


public void Handleevent (event event) {


Tableviewer.setsorter (New Bugsorter (colnames[0));


}


});


Tcsummary.addlistener (SWT. Selection, New Listener () {


public void Handleevent (event event) {


Tableviewer.setsorter (New Bugsorter (colnames[1));


}


});


Tcassignedto.addlistener (SWT. Selection, New Listener () {


public void Handleevent (event event) {


Tableviewer.setsorter (New Bugsorter (colnames[2));


}


});


Tcsolved.addlistener (SWT. Selection, New Listener () {


public void Handleevent (event event) {


Tableviewer.setsorter (New Bugsorter (colnames[3));


}


});


Bugs = bug.loadbugs (New File ("Bugs.dat"));


Tableviewer.setinput (bugs);


Shell.pack ();


Shell.open ();





while (!shell.isdisposed ()) {


if (!display.readanddispatch ()) {


Display.sleep ();


}


}


Display.dispose ();


}


private void Savebugs (Vector v) {


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 < v.size (); i++) {


Bug bug = (bug) v.elementat (i);


Out.writeutf (bug.id);


Out.writeutf (bug.summary);


Out.writeutf (bug.assignedto);


Out.writeboolean (bug.issolved);


}


catch (IOException IoE) {


finally {


try {


if (out!= null)


Out.close ();


catch (IOException e) {


E.printstacktrace ();


}


}


}


public static void Main (string[] args) {


New Bugtrackerjface ();


}


}


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.