diff --git a/resources/icons/normalize_black.png b/resources/icons/normalize_black.png
new file mode 100644
index 0000000..72cad11
Binary files /dev/null and b/resources/icons/normalize_black.png differ
diff --git a/resources/icons/normalize_white.png b/resources/icons/normalize_white.png
new file mode 100644
index 0000000..c6d5904
Binary files /dev/null and b/resources/icons/normalize_white.png differ
diff --git a/resources/ui.xml b/resources/ui.xml
index ed63f37..957258d 100644
--- a/resources/ui.xml
+++ b/resources/ui.xml
@@ -1,10 +1,12 @@
-
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
index 8592546..216d5f7 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -1,15 +1,11 @@
import guiTree.Components.Button;
-import guiTree.Components.TitleBar;
+import guiTree.Components.Panel;
import guiTree.Window;
+import guiTree.events.MouseAdapter;
import parser.XAMLParser;
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
+import java.awt.event.MouseEvent;
+
public class Main {
public static void main(String[] args) {
@@ -17,17 +13,20 @@ public class Main {
Window window = XAMLParser.parse("ui.xml");
assert window != null;
window.revalidate();
- Button button = (Button)window.findByName("button1");
-
- BufferedImage icon = null;
- try {
- icon = ImageIO.read(new File("resources\\icons\\square_white.png"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- TitleBar bar = new TitleBar("Working Title", icon);
- bar.setBackgroundColor(Color.GRAY);
- window.setTitleBar(bar);
+ Button button = (Button)window.findByName("button3");
+ button.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent mouseEvent) {
+ Panel panel = window.getMainPanel();
+ if(panel.getOverlapping()) {
+ panel.setOverlapping(false);
+ }
+ else {
+ panel.setOverlapping(true);
+ }
+ window.revalidate();
+ }
+ });
window.revalidate();
long now;
diff --git a/src/guiTree/Components/Button.java b/src/guiTree/Components/Button.java
index e709cba..503f9c8 100644
--- a/src/guiTree/Components/Button.java
+++ b/src/guiTree/Components/Button.java
@@ -37,36 +37,30 @@ public class Button extends Visual {
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent mouseEvent) {
- System.out.println("Pressed: " + getName());
pressed = true;
revalidate();
}
@Override
public void mouseReleased(MouseEvent mouseEvent) {
- System.out.println("Released: " + getName());
pressed = false;
revalidate();
}
@Override
public void mouseEntered(MouseEvent mouseEvent) {
- System.out.println("Entered: " + getName());
hovered = true;
revalidate();
}
@Override
public void mouseExited(MouseEvent mouseEvent) {
- System.out.println("Exited: " + getName());
hovered = false;
revalidate();
}
@Override
public void mouseDragged(MouseEvent mouseEvent) {
- System.out.println("DRAGGING: " + getName());
revalidate();
}
@Override
public void mouseMoved(MouseEvent mouseEvent) {
- System.out.println("Moved: " + getName());
revalidate();
}
});
diff --git a/src/guiTree/Components/Panel.java b/src/guiTree/Components/Panel.java
new file mode 100644
index 0000000..65aa75a
--- /dev/null
+++ b/src/guiTree/Components/Panel.java
@@ -0,0 +1,107 @@
+package guiTree.Components;
+
+import guiTree.Visual;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Panel extends Visual {
+ List visuals;
+ private Boolean overlapping;
+
+ public Panel() {
+ overlapping = false;
+ visuals = new ArrayList<>();
+ }
+
+ public void setOverlapping(Boolean overlapping) {
+ this.overlapping = overlapping;
+ reposition();
+ }
+
+ public Boolean getOverlapping() {
+ return this.overlapping;
+ }
+
+ private void calculateSize(Visual v) {
+
+ }
+
+ private void calculatePosition(Visual v) {
+ if(!overlapping) {
+ boolean ok = false;
+ while(!ok) {
+ ok = true;
+ for (int i = 0; i < visuals.size(); i++) {
+ Visual v2 = visuals.get(i);
+ if (isOverlapping(v, v2) && v != v2) {
+ System.out.println(v + " Overlapping with: " + v2);
+ if(v.getLocationX() + v.getWidth() + v2.getWidth() > this.getWidth()) {
+ if(v.getLocationY() + v.getHeight() + v2.getHeight() > this.getHeight()) {
+ break;
+ }
+ else {
+ v.setLocationY(v2.getLocationY() + v2.getHeight());
+ }
+ }
+ else {
+ v.setLocationX(v2.getLocationX() + v2.getWidth());
+ }
+ i = 0;
+ }
+ }
+ if(v.getLocationX() + v.getWidth() > this.getWidth()) {
+ ok = false;
+ v.setLocationY(v.getLocationY() + 10);
+ }
+ if(v.getLocationY() > this.getHeight()) {
+ v.setLocation(0, 0);
+ break;
+ }
+ }
+
+ }
+ }
+
+ private void reposition() {
+ for(int i = visuals.size() - 1; i >= 0; i--) {
+ calculatePosition(visuals.get(i));
+ }
+ }
+
+ @Override
+ public void addVisual(Visual v) {
+ calculatePosition(v);
+ super.addVisual(v);
+ visuals.add(v);
+ }
+
+ private Boolean isOverlapping(Visual v1, Visual v2) {
+ int l1x = v1.getLocationX();
+ int r1x = v1.getLocationX() + v1.getWidth();
+ int l1y = v1.getLocationY();
+ int r1y = v1.getLocationY() + v1.getHeight();
+ int l2x = v2.getLocationX();
+ int r2x = v2.getLocationX() + v2.getWidth();
+ int l2y = v2.getLocationY();
+ int r2y = v2.getLocationY() + v2.getHeight();
+
+ if(l1x > r2x || l2x > r1x) {
+ return false;
+ }
+
+ return l1y <= r2y && l2y <= r1y;
+ }
+
+ @Override
+ public void handleNotification(int notify) {
+ if(notify == TitleBar.CLOSE || notify == TitleBar.MAXIMIZE ||
+ notify == TitleBar.MINIMIZE || notify == TitleBar.NORMALIZE) {
+ notifyParent(notify);
+// return;
+ }
+// if(notify == SIZE_CHANGED || notify == LOCATION_CHANGED) {
+// reposition();
+// }
+ }
+}
diff --git a/src/guiTree/Components/TitleBar.java b/src/guiTree/Components/TitleBar.java
index b2011ab..33eca34 100644
--- a/src/guiTree/Components/TitleBar.java
+++ b/src/guiTree/Components/TitleBar.java
@@ -1,6 +1,5 @@
package guiTree.Components;
-import guiTree.Helper.Point2d;
import guiTree.Visual;
import guiTree.events.MouseAdapter;
@@ -9,9 +8,10 @@ import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
public class TitleBar extends Visual {
- public static final int MINIMIZE = 1;
- public static final int MAXIMIZE = 2;
- public static final int CLOSE = 3;
+ public static final int CLOSE = 10;
+ public static final int MINIMIZE = 11;
+ public static final int NORMALIZE = 12;
+ public static final int MAXIMIZE = 13;
private BufferedImage icon;
private String title;
@@ -60,22 +60,39 @@ public class TitleBar extends Visual {
this.setLocation(0, 0);
setButtonLocation();
+
+ this.addVisual(close);
+ this.addVisual(minimize);
+ this.addVisual(maximize);
+ minimize.setName("minimize");
+ maximize.setName("maximize");
+ close.setName("close");
close.addMouseListener(new MouseAdapter() {
@Override
- public void mouseClicked(MouseEvent mouseEvent) {
- notifyParent(3);
+ public void mouseReleased(MouseEvent mouseEvent) {
+ notifyParent(CLOSE);
}
});
maximize.addMouseListener(new MouseAdapter() {
+ private boolean isMaximized = false;
@Override
- public void mouseClicked(MouseEvent mouseEvent) {
- notifyParent(2);
+ public void mouseReleased(MouseEvent mouseEvent) {
+ if(isMaximized) {
+ notifyParent(NORMALIZE);
+ maximize.setIcon("square_white");
+ isMaximized = false;
+ }
+ else {
+ maximize.setIcon("normalize_white");
+ notifyParent(MAXIMIZE);
+ isMaximized = true;
+ }
}
});
minimize.addMouseListener(new MouseAdapter() {
@Override
- public void mouseClicked(MouseEvent mouseEvent) {
- notifyParent(1);
+ public void mouseReleased(MouseEvent mouseEvent) {
+ notifyParent(MINIMIZE);
}
});
}
@@ -134,15 +151,9 @@ public class TitleBar extends Visual {
private void setButtonLocation() {
int buttonOffset = this.getWidth() - close.getWidth();
close.setLocation(buttonOffset, 0);
- close.setName("close");
buttonOffset -= maximize.getWidth();
maximize.setLocation(buttonOffset, 0);
- maximize.setName("maximize");
buttonOffset -= minimize.getWidth();
minimize.setLocation(buttonOffset, 0);
- minimize.setName("minimize");
- this.addVisual(close);
- this.addVisual(minimize);
- this.addVisual(maximize);
}
}
diff --git a/src/guiTree/Listeners/Direction.java b/src/guiTree/Listeners/Direction.java
new file mode 100644
index 0000000..ddea0d5
--- /dev/null
+++ b/src/guiTree/Listeners/Direction.java
@@ -0,0 +1,9 @@
+package guiTree.Listeners;
+
+public enum Direction {
+ NORTH,
+ SOUTH,
+ WEST,
+ EAST,
+ ALL
+}
diff --git a/src/guiTree/Listeners/ResizeListener.java b/src/guiTree/Listeners/ResizeListener.java
new file mode 100644
index 0000000..56de6d8
--- /dev/null
+++ b/src/guiTree/Listeners/ResizeListener.java
@@ -0,0 +1,186 @@
+package guiTree.Listeners;
+
+import guiTree.Helper.Point2d;
+import guiTree.events.MouseAdapter;
+
+import java.awt.*;
+import java.awt.event.MouseEvent;
+
+public class ResizeListener extends MouseAdapter {
+ public Point2d location;
+ public Point2d size;
+ public Cursor cursor;
+ private Boolean moving = false;
+ private Boolean resizing = false;
+ private Point2d initialLocation;
+ private int resizeDelta = 5;
+ private Boolean NORTH;
+ private Boolean SOUTH;
+ private Boolean WEST;
+ private Boolean EAST;
+
+ public ResizeListener(Direction[] directions, Point2d size, Point2d location) {
+ this.cursor = new Cursor(Cursor.DEFAULT_CURSOR);
+ this.size = size;
+ this.location = location;
+ NORTH = false;
+ SOUTH = false;
+ WEST = false;
+ EAST = false;
+ for(Direction dir:directions) {
+ if(dir == Direction.NORTH) {
+ NORTH = true;
+ }
+ if(dir == Direction.SOUTH) {
+ SOUTH = true;
+ }
+ if(dir == Direction.WEST) {
+ WEST = true;
+ }
+ if(dir == Direction.EAST) {
+ EAST = true;
+ }
+ if(dir == Direction.ALL) {
+ NORTH = true;
+ SOUTH = true;
+ WEST = true;
+ EAST = true;
+ }
+ }
+ }
+
+ public void setLocation(int x, int y) {
+ location.x = x;
+ location.y = y;
+ }
+
+ public void setSize(int x, int y) {
+ size.x = x;
+ size.y = y;
+ }
+
+ @Override
+ public void mouseExited(MouseEvent mouseEvent) {
+ this.cursor = new Cursor(Cursor.DEFAULT_CURSOR);
+ }
+
+ @Override
+ public void mouseDragged(MouseEvent mouseEvent) {
+ if(moving) {
+ setLocation(mouseEvent.getXOnScreen() - initialLocation.x, mouseEvent.getYOnScreen() - initialLocation.y);
+ }
+ else if(!resizing){
+ this.resizing = true;
+ this.resize(mouseEvent);
+ }
+
+ }
+
+ @Override
+ public void mousePressed(MouseEvent mouseEvent) {
+ if(cursor.getType() != Cursor.DEFAULT_CURSOR){
+ this.moving = false;
+ }
+ else {
+ this.moving = true;
+ this.resizing = false;
+ }
+ initialLocation = new Point2d(mouseEvent.getX(), mouseEvent.getY());
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent mouseEvent) {
+ moving = false;
+ }
+
+ @Override
+ public void mouseMoved(MouseEvent mouseEvent) {
+ if(mouseEvent.getX() < resizeDelta || mouseEvent.getX() > size.x - resizeDelta ||
+ mouseEvent.getY() < resizeDelta || mouseEvent.getY() > size.y - resizeDelta) {
+ this.setResizeCursor(mouseEvent);
+ }
+ else {
+ cursor = new Cursor(Cursor.DEFAULT_CURSOR);
+ }
+ }
+
+ private void setResizeCursor(MouseEvent e){
+ if(e.getX() <= resizeDelta) {
+ if(e.getY() <= resizeDelta && (NORTH && WEST)) {
+ cursor = new Cursor(Cursor.NW_RESIZE_CURSOR);
+ }
+ else if(e.getY() >= size.y - resizeDelta && (SOUTH && WEST)){
+ cursor = new Cursor(Cursor.SW_RESIZE_CURSOR);
+ }
+ else if(WEST){
+ cursor = new Cursor(Cursor.W_RESIZE_CURSOR);
+ }
+ }
+ else if(e.getX() >= size.x - resizeDelta){
+ if(e.getY() <= resizeDelta && (NORTH && EAST)){
+ cursor = new Cursor(Cursor.NE_RESIZE_CURSOR);
+ }
+ else if(e.getY() >= size.y - resizeDelta && (SOUTH && EAST)){
+ cursor = new Cursor(Cursor.SE_RESIZE_CURSOR);
+ }
+ else if(EAST){
+ cursor = new Cursor(Cursor.E_RESIZE_CURSOR);
+ }
+ }
+ else{
+ if(e.getY() <= resizeDelta && (NORTH)){
+ cursor = new Cursor(Cursor.N_RESIZE_CURSOR);
+ }
+ else if(e.getY() >= size.y - resizeDelta && (SOUTH)){
+ cursor = new Cursor(Cursor.S_RESIZE_CURSOR);
+ }
+ }
+ }
+
+ private void resize(MouseEvent e) {
+ switch (cursor.getType()) {
+ case Cursor.N_RESIZE_CURSOR:
+ setSize(size.x, size.y + initialLocation.y - e.getYOnScreen());
+ setLocation(location.x, e.getYOnScreen());
+ initialLocation.y = e.getYOnScreen();
+ break;
+ case Cursor.NE_RESIZE_CURSOR:
+ setSize(size.x + e.getXOnScreen() - initialLocation.x, size.y + initialLocation.y - e.getYOnScreen());
+ setLocation(location.x, e.getYOnScreen());
+ initialLocation.x = e.getXOnScreen();
+ initialLocation.y = e.getYOnScreen();
+ break;
+ case Cursor.NW_RESIZE_CURSOR:
+ setSize(size.x + initialLocation.x - e.getXOnScreen(), size.y + initialLocation.y - e.getYOnScreen());
+ setLocation(e.getXOnScreen(), e.getYOnScreen());
+ initialLocation.x = e.getXOnScreen();
+ initialLocation.y = e.getYOnScreen();
+ break;
+ case Cursor.E_RESIZE_CURSOR:
+ setSize(size.x + e.getXOnScreen() - initialLocation.x, size.y);
+ initialLocation.x = e.getXOnScreen();
+ break;
+ case Cursor.W_RESIZE_CURSOR:
+ setSize(size.x + initialLocation.x - e.getXOnScreen(), size.y);
+ setLocation(e.getXOnScreen(), location.y);
+ initialLocation.x = e.getXOnScreen();
+ break;
+ case Cursor.SE_RESIZE_CURSOR:
+ setSize(size.x + e.getXOnScreen() - initialLocation.x, size.y + e.getYOnScreen() - initialLocation.y);
+ initialLocation.x = e.getXOnScreen();
+ initialLocation.y = e.getYOnScreen();
+ break;
+ case Cursor.S_RESIZE_CURSOR:
+ setSize(size.x, size.y + e.getYOnScreen() - initialLocation.y);
+ initialLocation.y = e.getYOnScreen();
+ break;
+ case Cursor.SW_RESIZE_CURSOR:
+ setSize(size.x + initialLocation.x - e.getXOnScreen(), size.y + e.getYOnScreen() - initialLocation.y);
+ setLocation(e.getXOnScreen(), location.y);
+ initialLocation.x = e.getXOnScreen();
+ initialLocation.y = e.getYOnScreen();
+ break;
+ }
+ this.resizing = false;
+ }
+}
diff --git a/src/guiTree/Visual.java b/src/guiTree/Visual.java
index 9a7594d..cf2ba8a 100644
--- a/src/guiTree/Visual.java
+++ b/src/guiTree/Visual.java
@@ -12,6 +12,11 @@ import java.util.ArrayList;
import java.util.List;
public class Visual {
+ /*--------------------------------------------------------------------
+ Constant Values
+ ---------------------------------------------------------------------*/
+ public static final int SIZE_CHANGED = 1;
+ public static final int LOCATION_CHANGED = 2;
/*--------------------------------------------------------------------
Tree Elements
@@ -57,6 +62,7 @@ public class Visual {
this.mouseListeners = new ArrayList<>();
this.keyListeners = new ArrayList<>();
this.parent = null;
+ this.name = "";
this.backgroundColor = Color.WHITE;
this.foregroundColor = Color.BLUE;
this.fontColor = Color.BLACK;
@@ -88,12 +94,27 @@ public class Visual {
initializeImageBuffer();
this.dirty = true;
+ this.notifyParent(SIZE_CHANGED);
}
+// public void setSize(Float width, Float height) {
+// this.width = Math.round(this.parent.width * width);
+// this.height = Math.round(this.parent.height * height);
+// }
+
public void setLocation(Integer x, Integer y) {
this.locationX = x;
this.locationY = y;
this.dirty = true;
+ notifyParent(LOCATION_CHANGED);
+ }
+
+ public void setLocationX(Integer x) {
+ this.locationX = x;
+ }
+
+ public void setLocationY(Integer y) {
+ this.locationY = y;
}
public void setBackgroundColor(Color backgroundColor) {
@@ -120,11 +141,11 @@ public class Visual {
}
private void calculateInitialLocation() {
- if(this.locationX == 0) {
- this.locationX = 1;
+ if(this.locationX <= 0) {
+ this.locationX = 0;
}
- if(this.locationY == 0){
- this.locationY = 1;
+ if(this.locationY <= 0){
+ this.locationY = 0;
}
}
@@ -185,15 +206,9 @@ public class Visual {
}
public void addVisual(Visual child) {
- this.addVisual(child, -1, -1);
- }
-
- public void addVisual(Visual child, int x, int y) {
this.children.add(child);
child.setParent(this);
- if(x == -1 && y == -1) {
- child.calculateInitialLocation();
- }
+ child.calculateInitialLocation();
child.calculateInitialSize();
if(this.active) {
@@ -220,7 +235,9 @@ public class Visual {
}
public void notifyParent(int notify) {
- this.parent.handleNotification(notify);
+ if(parent != null) {
+ this.parent.handleNotification(notify);
+ }
}
private void repaint() {
@@ -410,6 +427,9 @@ public class Visual {
Helper Methods
---------------------------------------------------------------------*/
private void initializeImageBuffer(){
+ if(this.width == 0 || this.height == 0) {
+ return;
+ }
this.imageBuffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
clearImageBuffer();
}
diff --git a/src/guiTree/Window.java b/src/guiTree/Window.java
index 9ab3b96..8ef72c7 100644
--- a/src/guiTree/Window.java
+++ b/src/guiTree/Window.java
@@ -2,21 +2,29 @@ package guiTree;
import guiTree.Components.TitleBar;
import guiTree.Helper.Point2d;
+import guiTree.Listeners.Direction;
+import guiTree.Listeners.ResizeListener;
import guiTree.events.MouseAdapter;
+import guiTree.Components.Panel;
-import javax.tools.Tool;
+import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.WindowListener;
import java.awt.event.WindowStateListener;
import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
public class Window extends Visual {
public CustomFrame frame;
private TitleBar titleBar;
+ private Panel mainPanel;
+ private ResizeListener windowResizeListener;
+ private Point2d oldSize;
+ private Point2d oldLocation;
- public Window()
- {
+ public Window() {
super();
this.frame = new CustomFrame(this);
this.setUndecorated(true);
@@ -24,16 +32,48 @@ public class Window extends Visual {
this.setSize(getWidth(), getHeight());
revalidate();
});
+ Direction[] directions = {Direction.SOUTH, Direction.EAST, Direction.WEST};
+ windowResizeListener = new ResizeListener(directions, new Point2d(getWidth(), getHeight()), new Point2d(getLocationX(), getLocationY()));
+ this.addMouseListener(windowResizeListener);
+ this.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseDragged(MouseEvent mouseEvent) {
+ setSize(windowResizeListener.size.x, windowResizeListener.size.y);
+ setLocation(windowResizeListener.location.x, windowResizeListener.location.y);
+ }
+ @Override
+ public void mouseMoved(MouseEvent mouseEvent) {
+ frame.setCursor(windowResizeListener.cursor);
+ }
+ @Override
+ public void mouseExited(MouseEvent mouseEvent) {
+ frame.setCursor(windowResizeListener.cursor);
+ }
+ });
+ this.mainPanel = new Panel();
+
+ super.addVisual(mainPanel);
+
+ BufferedImage icon = null;
+ try {
+ icon = ImageIO.read(new File("resources\\icons\\square_white.png"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ TitleBar bar = new TitleBar("Working Title", icon);
+ bar.setBackgroundColor(Color.GRAY);
+ this.setTitleBar(bar);
}
@Override
- public void setSize(Integer width, Integer height)
- {
+ public void setSize(Integer width, Integer height) {
this.frame.setSize(width, height);
super.setSize(width, height);
if(this.titleBar != null) {
this.titleBar.setSize(this.getWidth(), titleBar.getHeight());
}
+ windowResizeListener.setSize(width, height);
+ mainPanel.setSize(width, height);
revalidate();
}
@@ -78,12 +118,25 @@ public class Window extends Visual {
titleBar.setSize(this.getWidth(), titleBar.getHeight());
if(this.getTitleBar() != null) {
- this.removeVisual(this.titleBar);
+ mainPanel.removeVisual(this.titleBar);
}
this.titleBar = titleBar;
- this.addVisual(titleBar, 0, 0);
- this.titleBar.addMouseListener(new TitleBarMouseListener());
+ mainPanel.addVisual(titleBar);
+ this.titleBar.addMouseListener(new MouseAdapter() {
+ private int startX;
+ private int startY;
+
+ @Override
+ public void mousePressed(MouseEvent mouseEvent) {
+ startX = mouseEvent.getX();
+ startY = mouseEvent.getY();
+ }
+ @Override
+ public void mouseDragged(MouseEvent mouseEvent) {
+ setLocation(mouseEvent.getXOnScreen() - startX, mouseEvent.getYOnScreen() - startY);
+ }
+ });
}
public TitleBar getTitleBar() {
@@ -104,66 +157,57 @@ public class Window extends Visual {
frame.setState(state);
}
- private void moveTo(int x, int y) {
+ public int getState() {
+ return frame.getState();
+ }
+
+ public void setLocation(int x, int y) {
this.frame.setLocation(x, y);
+ windowResizeListener.setLocation(x, y);
+ }
+
+ public void setMainPanel(Panel panel) {
+ this.removeVisual(mainPanel);
+ this.addVisual(panel);
+ this.mainPanel = panel;
+ }
+
+ public Panel getMainPanel() {
+ return this.mainPanel;
}
@Override
public void handleNotification(int notify) {
switch(notify) {
- case TitleBar.CLOSE:
+ case TitleBar.CLOSE: {
dispose();
break;
- case TitleBar.MINIMIZE:
+ }
+ case TitleBar.MINIMIZE: {
setState(Frame.ICONIFIED);
break;
- case TitleBar.MAXIMIZE:
+ }
+ case TitleBar.MAXIMIZE: {
Rectangle screenBounds = frame.getGraphicsConfiguration().getBounds();
+ oldSize = new Point2d(getWidth(), getHeight());
+ oldLocation = new Point2d(frame.getX(), frame.getY());
this.setSize(screenBounds.width, screenBounds.height);
- this.moveTo(screenBounds.x, screenBounds.y);
+ this.setLocation(screenBounds.x, screenBounds.y);
setState(Frame.MAXIMIZED_BOTH);
break;
- }
- }
-
- private class WindowMouseListener extends MouseAdapter{
- private Boolean resizing;
- private Boolean moving;
- private Point2d initialLocation;
-
- @Override
- public void mousePressed(MouseEvent mouseEvent) {
- this.initialLocation = new Point2d(mouseEvent.getX(), mouseEvent.getY());
- }
-
- @Override
- public void mouseReleased(MouseEvent mouseEvent) {
- moving = false;
- resizing = false;
- }
- }
-
-
- private class TitleBarMouseListener extends MouseAdapter {
- private Boolean moving = false;
- private Point2d initialLocation;
-
- @Override
- public void mouseDragged(MouseEvent mouseEvent) {
- if(moving) {
- moveTo(mouseEvent.getXOnScreen() - initialLocation.x, mouseEvent.getYOnScreen() - initialLocation.y);
+ }
+ case TitleBar.NORMALIZE: {
+ Rectangle screenBounds = frame.getGraphicsConfiguration().getBounds();
+ this.setSize(oldSize.x, oldSize.y);
+ this.setLocation(oldLocation.x, oldLocation.y);
+ setState(Frame.NORMAL);
+ break;
}
}
+ }
- @Override
- public void mousePressed(MouseEvent mouseEvent) {
- moving = true;
- initialLocation = new Point2d(mouseEvent.getX(), mouseEvent.getY());
- }
-
- @Override
- public void mouseReleased(MouseEvent mouseEvent) {
- moving = false;
- }
+ @Override
+ public void addVisual(Visual v) {
+ mainPanel.addVisual(v);
}
}
diff --git a/src/parser/XAMLParser.java b/src/parser/XAMLParser.java
index cc74d7c..9cb8f52 100644
--- a/src/parser/XAMLParser.java
+++ b/src/parser/XAMLParser.java
@@ -143,7 +143,6 @@ public class XAMLParser {
if(parentObject instanceof Visual && childObject instanceof Visual) {
addVisual((Visual) parentObject, (Visual) childObject);
}
- System.out.println("\nCurrent Element :" + childNode.getNodeName());
}
}
return parentObject;