Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: plugins/SimpleSort.java


1   package plugins;
2   
3   import java.util.Vector;
4   import java.util.Random;
5   
6   import javax.swing.JPanel;
7   import javax.swing.JLabel;
8   import javax.swing.JScrollPane;
9   import javax.swing.JList;
10  
11  import java.awt.GridLayout;
12  import java.awt.GridBagLayout;
13  import java.awt.GridBagConstraints;
14  import java.awt.BorderLayout;
15  import java.awt.Insets;
16  
17  import java.awt.event.*;
18  
19  import javax.swing.JButton;
20  import javax.swing.JSlider;
21  import javax.swing.event.ChangeEvent;
22  
23  import javax.swing.SwingConstants;
24  import javax.swing.BorderFactory;
25  
26  import java.awt.SystemColor;
27  import java.awt.Dimension;
28  
29  import musli.aorta.Creator;
30  import musli.aorta.Worker;
31  import musli.aorta.Tasklet;
32  import musli.util.Logger;
33  
34  /**
35   * This is the GUI part of the Tasklet, allowing the user to set the parameters 
36   * for the task and "fire".
37   * The corresponding tasklet is the "SimpleSortTasklet.java"
38   *
39   * @author Olle Persson
40   */
41  public class SimpleSort extends Creator
42  {
43      Vector   v;
44      
45      final int SPLITS         = 3;
46      final int ELEMENTS       = 10;
47      final int MAXSPLITS      = 30;
48      final int MAXELEMENTS    = 100000;
49      final int MAXRANDOMVALUE = 100000;
50      
51      int elementsNo = ELEMENTS;
52      int splits = SPLITS;
53      long startTime;
54      
55      Random r = new Random(System.currentTimeMillis());
56      
57  ///    JPanel jPanelMain = new JPanel();
58      JPanel jPanelLeft = new JPanel();
59      JPanel jPanelCenter = new JPanel();
60      JPanel jPanelRight = new JPanel();
61      JScrollPane jScrollPaneCenter = new JScrollPane();
62      GridBagLayout gridBagLayoutMain = new GridBagLayout();
63      BorderLayout borderLayoutRoot = new BorderLayout();
64      BorderLayout borderLayoutCenter = new BorderLayout();
65      GridLayout gridLayoutRight = new GridLayout(10,1);
66      GridLayout gridLayoutLeft = new GridLayout(3,1);
67      JSlider jSliderElements = new JSlider();
68      JSlider jSliderSplits = new JSlider();
69      JButton jButtonRandom = new JButton();
70      JButton jButtonSort = new JButton();
71      JList jListElements = new JList();
72      JLabel jLabelElements = new JLabel();
73      JLabel jLabelStartTime = new JLabel();
74      JLabel jLabelStartTimeValue = new JLabel();
75      JLabel jLabelEndTime = new JLabel();
76      JLabel jLabelEndTimeValue = new JLabel();
77      JLabel jLabelDiffTime = new JLabel();
78     JLabel jLabelDiffTimeValue = new JLabel();
79      JLabel jLabelSplitsValue = new JLabel();
80      JLabel jLabelSplits = new JLabel();
81  
82      /**
83       * Creates our GUI 
84       *
85       */
86      public  void initGUI()
87      {
88  //      this.getContentPane().setLayout(borderLayoutRoot);
89        setLayout(gridBagLayoutMain);
90        jSliderElements.setValue(ELEMENTS);
91        jSliderElements.setMinimum(1);
92        jSliderElements.setPreferredSize(new Dimension(200, 19));
93        jSliderElements.setMaximum(MAXELEMENTS);
94        jSliderElements.addChangeListener(new javax.swing.event.ChangeListener()
95        {
96          public void stateChanged(ChangeEvent e)
97          {
98            jSliderElements_stateChanged(e);
99          }
100       });
101       jLabelElements.setHorizontalAlignment(SwingConstants.CENTER);
102       jLabelElements.setHorizontalTextPosition(SwingConstants.CENTER);
103       jLabelElements.setText(""+ELEMENTS);
104       jLabelElements.setVerticalAlignment(SwingConstants.BOTTOM);
105       jButtonRandom.setText("Random");
106       jButtonRandom.addActionListener(new java.awt.event.ActionListener()
107       {
108         public void actionPerformed(ActionEvent e)
109         {
110           jButtonRandom_actionPerformed(e);
111         }
112       });
113       jPanelLeft.setLayout(gridLayoutLeft);
114       jPanelCenter.setLayout(borderLayoutCenter);
115       jPanelLeft.setBorder(BorderFactory.createLineBorder(SystemColor.controlText,1));
116       jPanelRight.setBorder(BorderFactory.createLineBorder(SystemColor.controlText,1));
117       jPanelRight.setLayout(gridLayoutRight);
118       jPanelCenter.setBorder(BorderFactory.createLineBorder(SystemColor.controlText,1));
119       jPanelCenter.setPreferredSize(new Dimension(100, 100));
120       jLabelStartTime.setText(" Starttime:");
121       jLabelEndTime.setText(" Endtime:");
122       jLabelDiffTime.setText(" Difftime (msec):");
123       jButtonSort.setText("Sort");
124       jButtonSort.addActionListener(new java.awt.event.ActionListener()
125       {
126         public void actionPerformed(ActionEvent e)
127         {
128           jButtonSort_actionPerformed(e);
129         }
130       });
131       jSliderSplits.setValue(SPLITS);
132       jSliderSplits.setMinimum(1);
133       jSliderSplits.setMaximum(MAXSPLITS);
134       jSliderSplits.setPreferredSize(new Dimension(200, 19));
135       jSliderSplits.addChangeListener(new javax.swing.event.ChangeListener()
136       {
137         public void stateChanged(ChangeEvent e)
138         {
139           jSliderSplits_stateChanged(e);
140         }
141       });
142       jLabelSplitsValue.setHorizontalAlignment(SwingConstants.CENTER);
143       jLabelSplitsValue.setText(""+SPLITS);
144       jLabelSplitsValue.setVerticalAlignment(SwingConstants.BOTTOM);
145       jLabelStartTimeValue.setHorizontalAlignment(SwingConstants.CENTER);
146       jLabelEndTimeValue.setHorizontalAlignment(SwingConstants.CENTER);
147       jLabelDiffTimeValue.setHorizontalAlignment(SwingConstants.CENTER);
148       jLabelSplits.setText(" Splits:");
149       jLabelSplits.setVerticalAlignment(SwingConstants.BOTTOM);
150       jScrollPaneCenter.setPreferredSize(new Dimension(100, 100));
151 ///      add(jPanelMain,  BorderLayout.CENTER);
152       add(jPanelLeft,  new GridBagConstraints(0, 0, 1, 1, 0.4, 1.0
153               ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
154       jPanelLeft.add(jLabelElements, null);
155       jPanelLeft.add(jSliderElements, null);
156       jPanelLeft.add(jButtonRandom, null);
157       add(jPanelCenter,   new GridBagConstraints(1, 0, 1, 1, 0.2, 1.0
158               ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
159       jPanelCenter.add(jScrollPaneCenter, BorderLayout.CENTER);
160       jScrollPaneCenter.getViewport().add(jListElements, null);
161       add(jPanelRight,  new GridBagConstraints(2, 0, 1, 1, 0.4, 1.0
162               ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
163       jPanelRight.add(jLabelStartTime, null);
164       jPanelRight.add(jLabelStartTimeValue, null);
165       jPanelRight.add(jLabelEndTime, null);
166       jPanelRight.add(jLabelEndTimeValue, null);
167       jPanelRight.add(jLabelDiffTime, null);
168       jPanelRight.add(jLabelDiffTimeValue, null);
169       jPanelRight.add(jLabelSplits, null);
170       jPanelRight.add(jLabelSplitsValue, null);
171       jPanelRight.add(jSliderSplits, null);
172       jPanelRight.add(jButtonSort, null);
173 
174 //      this.pack();
175 //      this.setVisible(true);
176     }
177 
178   void jSliderElements_stateChanged(ChangeEvent e)
179   {
180     elementsNo=jSliderElements.getValue();
181     jLabelElements.setText("" + elementsNo);
182   }
183 
184   void jButtonRandom_actionPerformed(ActionEvent e)
185   {
186       generateRandomnumbers();
187   }
188 
189     private void generateRandomnumbers()
190     {
191   v = new Vector();
192   for(int i = 0; i < elementsNo; i++)
193   {
194       v.addElement(new Integer(r.nextInt(MAXRANDOMVALUE)));
195   }
196   
197   jListElements.setListData(v);
198     }
199 
200   void jSliderSplits_stateChanged(ChangeEvent e)
201   {
202     jLabelSplitsValue.setText("" + jSliderSplits.getValue());
203   }
204 
205   void jButtonSort_actionPerformed(ActionEvent e)
206   {
207       if(v == null)
208       {
209     generateRandomnumbers();
210       }
211 
212       startTime = System.currentTimeMillis();
213       jLabelStartTimeValue.setText(""+startTime);  //    Sort the list.
214       jLabelEndTimeValue.setText("");
215       jLabelDiffTimeValue.setText("");
216       
217 
218       
219       Thread t = new Thread (new Runnable()
220     {
221         public void run()
222         {
223       int nr = (v.size()/jSliderSplits.getValue())+1;
224       SimpleSortTasklet t=new SimpleSortTasklet( Worker.getInstance().createTaskID(), v, nr);
225                   t.setProcessor(musli.aorta.TailRecursiveProcessor.class);
226       fireCompute(t);
227         }
228     });
229       
230       t.start();
231   }
232     
233 
234 //********'********'********'********'********'********'********'********'********'********'
235     /**
236      * Present result of the task compute.
237      *@param task our finished task.
238      */
239     public  void viewResult(Object obj)
240     {
241 
242   Tasklet task=(Tasklet)obj;
243 
244   long eTime = System.currentTimeMillis();
245   jLabelEndTimeValue.setText(""+eTime);
246   jLabelDiffTimeValue.setText(""+(eTime-startTime));
247       v = (Vector)task.getResult();
248       jListElements.setListData(v);
249     }
250 
251     /**
252      * Gives the classname for our algortim part.
253      *@return The Class
254      */
255     public  Class taskClass()
256     {
257   Class theClass=null;
258   try
259   {
260       theClass=Class.forName("plugins.SimpleSortTasklet");
261   }
262   catch(Exception e)
263         {
264       Logger.log("Problem with plugin:"+e);
265   }
266   
267   return theClass;
268     }
269 }