summaryrefslogtreecommitdiff
path: root/labs/lab08_gnome_sort/VisualSortingComponent.java
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
commit89cdf3efb49335e7c07a68a5a64657eeec2288a6 (patch)
treecdc0fd8165e65b1637fa54cac11c932acefc8a89 /labs/lab08_gnome_sort/VisualSortingComponent.java
downloadcoe0445-master.tar.gz
coe0445-master.tar.bz2
coe0445-master.zip
Inital commitHEADmaster
Diffstat (limited to 'labs/lab08_gnome_sort/VisualSortingComponent.java')
-rw-r--r--labs/lab08_gnome_sort/VisualSortingComponent.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/labs/lab08_gnome_sort/VisualSortingComponent.java b/labs/lab08_gnome_sort/VisualSortingComponent.java
new file mode 100644
index 0000000..92152b8
--- /dev/null
+++ b/labs/lab08_gnome_sort/VisualSortingComponent.java
@@ -0,0 +1,78 @@
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Rectangle2D;
+import javax.swing.JComponent;
+
+@SuppressWarnings("serial")
+public class VisualSortingComponent extends JComponent
+{
+ private int leftMargin = 10;
+ private int rightMargin = 10;
+ private int topMargin = 10;
+ private int bottomMargin = 10;
+ private int max;
+ private int min;
+ private int width;
+ private int height;
+ private int[] data;
+ private int numData;
+
+ public VisualSortingComponent(int[] aData)
+ {
+ data = aData;
+ numData = data.length;
+
+ if(numData > 0)
+ {
+ max = data[0];
+ min = data[0];
+
+ for(int i = 1; i < numData; i++)
+ {
+ if(data[i] > max)
+ {
+ max = data[i];
+ }
+
+ if(min > data[i])
+ {
+ min = data[i];
+ }
+ }
+ }
+ }
+
+ public void paintComponent(Graphics g)
+ {
+ Graphics2D g2 = (Graphics2D) g;
+
+ width = this.getWidth();
+ height = this.getHeight();
+
+ double dataWidth = (width - (leftMargin + rightMargin)) / numData;
+ double heightFactor = (height - (topMargin + bottomMargin)) / numData;
+
+ // draw the base;
+
+ Line2D.Double line = new Line2D.Double(leftMargin, height - bottomMargin, width - leftMargin, height - bottomMargin);
+ g2.draw(line);
+
+ // draw aata
+
+ Rectangle2D.Double rect = new Rectangle2D.Double(0,0,0,0);
+
+ for(int i = 0; i < numData; i++)
+ {
+ double x = leftMargin + (dataWidth * i);
+ double y = (height - bottomMargin) - (heightFactor * data[i]);
+ rect.setRect(x,y,dataWidth,data[i] * heightFactor);
+
+ g2.setColor(Color.GREEN);
+ g2.fill(rect);
+ g2.setColor(Color.BLACK);
+ g2.draw(rect);
+ }
+ }
+}