Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /***********************************************************************
- * Module: ResizeState.java
- * Author: e13592
- * Purpose: Defines the Class ResizeState
- ***********************************************************************/
- package view.graph.state;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseWheelEvent;
- import java.awt.geom.Point2D;
- import java.util.Iterator;
- import model.genericFunctions.Element;
- import model.graph.Node;
- import model.graph.commands.ResizeElementCommand;
- import view.MainFrame;
- import view.graph.GraphDocumentView;
- import view.graph.GraphEditorPanel;
- import view.graph.GraphWorkArea;
- import view.graph.GraphWorkArea.Handle;
- public class ResizeState extends State {
- private Handle handleInMotion = null;
- private double oldXscale, oldYscale;
- private Point2D oldPosition;
- private Node currentNode;
- @Override
- public void mouseReleased(MouseEvent e) {
- handleInMotion = null;
- ResizeElementCommand command = new ResizeElementCommand(oldXscale,oldYscale,oldPosition,currentNode);
- MainFrame.getInstance().getGraphEditorPanel().getGraphDocument()
- .getCommandManager().executeCommand(command);
- ((GraphWorkArea) ((GraphEditorPanel) MainFrame.getInstance()
- .getGraphEditorPanel()).getGraphDocumentView().getWorkArea())
- .setState(new SelectionState());
- }
- @Override
- public void mouseDragged(MouseEvent e) {
- GraphDocumentView graphDocumentView = MainFrame.getInstance()
- .getGraphEditorPanel().getGraphDocumentView();
- GraphWorkArea graphWorkArea = (GraphWorkArea) graphDocumentView
- .getWorkArea();
- Point2D position = e.getPoint();
- graphWorkArea.pointToUserSpace(position);
- if (handleInMotion == null) {
- handleInMotion = graphWorkArea.getDeviceAndHandleForPoint(position);
- } else {
- Iterator<Element> it = graphWorkArea.getCurrentElements()
- .iterator();
- while (it.hasNext()) {
- Element element = it.next();
- if (element instanceof Node) {
- Node device = (Node) element;
- oldXscale = device.getScaleX();
- oldYscale = device.getScaleY();
- oldPosition = device.getPosition();
- switch (handleInMotion.ordinal()) {
- case 0: {
- // North
- device.setHandleInMotion(Handle.North);
- double razlikaY = device.getPosition().getY()
- - position.getY();
- double newHeight = device.getSize().getHeight()
- + razlikaY;
- double scaleY = newHeight
- / device.getInitSize().getHeight();
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX(), device
- .getPosition().getY() - razlikaY);
- device.setScaleY(scaleY);
- device.setPosition(newPostition);
- break;
- }
- case 1: {
- // South
- device.setHandleInMotion(Handle.South);
- double razlikaY = position.getY()
- - (device.getPosition().getY() + device
- .getSize().getHeight());
- double newHeight = device.getSize().getHeight()
- + razlikaY;
- double scaleY = newHeight
- / device.getInitSize().getHeight();
- device.setScaleY(scaleY);
- break;
- }
- case 2: {
- // East
- device.setHandleInMotion(Handle.East);
- double razlikaX = position.getX()
- - (device.getPosition().getX() + device
- .getSize().getWidth());
- double newWidth = device.getSize().getWidth()
- + razlikaX;
- double scaleX = newWidth
- / device.getInitSize().getWidth();
- device.setScaleX(scaleX);
- break;
- }
- case 3: {
- // West
- device.setHandleInMotion(Handle.West);
- double razlikaX = device.getPosition().getX()
- - position.getX();
- double newWidth = device.getSize().getWidth()
- + razlikaX;
- double scaleX = newWidth
- / device.getInitSize().getWidth();
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX() - razlikaX, device
- .getPosition().getY());
- device.setScaleX(scaleX);
- device.setPosition(newPostition);
- break;
- }
- case 4: {
- // SouthEast
- device.setHandleInMotion(Handle.SouthEast);
- double razlikaX = position.getX()
- - (device.getPosition().getX() + device
- .getSize().getWidth());
- double razlikaY = position.getY()
- - (device.getPosition().getY() + device
- .getSize().getHeight());
- double newWidth = device.getSize().getWidth()
- + razlikaX;
- double newHeight = device.getSize().getHeight()
- + razlikaY;
- double scaleX = newWidth
- / device.getInitSize().getWidth();
- double scaleY = newHeight
- / device.getInitSize().getHeight();
- // uniformni resize po x i y
- if (e.isShiftDown()) {
- double newScale = 1;
- if (scaleX < scaleY)
- newScale = scaleX;
- else
- newScale = scaleY;
- device.setScaleX(newScale);
- device.setScaleY(newScale);
- } else {
- device.setScaleX(scaleX);
- device.setScaleY(scaleY);
- }
- break;
- }
- case 5: {
- // SouthWest
- device.setHandleInMotion(Handle.SouthWest);
- double razlikaX = device.getPosition().getX()
- - position.getX();
- double razlikaY = position.getY()
- - (device.getPosition().getY() + device
- .getSize().getHeight());
- double newWidth = device.getSize().getWidth()
- + razlikaX;
- double newHeight = device.getSize().getHeight()
- + razlikaY;
- double scaleX = newWidth
- / device.getInitSize().getWidth();
- double scaleY = newHeight
- / device.getInitSize().getHeight();
- double newScale = 1;
- if (e.isShiftDown()) {
- if (scaleX < scaleY) {
- newScale = scaleX;
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX() - razlikaX, device
- .getPosition().getY());
- device.setPosition(newPostition);
- }
- else {
- newScale = scaleY;
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX()-razlikaY, device
- .getPosition().getY());
- device.setPosition(newPostition);
- }
- device.setScaleX(newScale);
- device.setScaleY(newScale);
- } else {
- device.setScaleX(scaleX);
- device.setScaleY(scaleY);
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX() - razlikaX, device
- .getPosition().getY());
- device.setPosition(newPostition);
- }
- break;
- }
- case 6: {
- // NorthEast
- device.setHandleInMotion(Handle.NorthEast);
- double razlikaX = position.getX()
- - (device.getPosition().getX() + device
- .getSize().getWidth());
- double razlikaY = device.getPosition().getY()
- - position.getY();
- double newWidth = device.getSize().getWidth()
- + razlikaX;
- double newHeight = device.getSize().getHeight()
- + razlikaY;
- double scaleX = newWidth
- / device.getInitSize().getWidth();
- double scaleY = newHeight
- / device.getInitSize().getHeight();
- double newScale = 1;
- if (e.isShiftDown()) {
- if (scaleX < scaleY) {
- newScale = scaleX;
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX(), device
- .getPosition().getY() - razlikaX);
- device.setPosition(newPostition);
- }
- else {
- newScale = scaleY;
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX(), device
- .getPosition().getY()-razlikaY);
- device.setPosition(newPostition);
- }
- device.setScaleX(newScale);
- device.setScaleY(newScale);
- } else {
- device.setScaleX(scaleX);
- device.setScaleY(scaleY);
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX(), device
- .getPosition().getY()-razlikaY);
- device.setPosition(newPostition);
- }
- break;
- }
- case 7: {
- // NorthWest
- device.setHandleInMotion(Handle.NorthWest);
- double razlikaX = device.getPosition().getX()
- - position.getX();
- double razlikaY = device.getPosition().getY()
- - position.getY();
- double newWidth = device.getSize().getWidth()
- + razlikaX;
- double newHeight = device.getSize().getHeight()
- + razlikaY;
- double scaleX = newWidth
- / device.getInitSize().getWidth();
- double scaleY = newHeight
- / device.getInitSize().getHeight();
- double newScale = 1;
- if (e.isShiftDown()) {
- if (scaleX < scaleY) {
- newScale = scaleX;
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX() - razlikaX, device
- .getPosition().getY() - razlikaX);
- device.setPosition(newPostition);
- }
- else {
- newScale = scaleY;
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX() -razlikaY, device
- .getPosition().getY()-razlikaY);
- device.setPosition(newPostition);
- }
- device.setScaleX(newScale);
- device.setScaleY(newScale);
- } else {
- device.setScaleX(scaleX);
- device.setScaleY(scaleY);
- Point2D newPostition = new java.awt.geom.Point2D.Double(
- device.getPosition().getX() - razlikaX, device
- .getPosition().getY()-razlikaY);
- device.setPosition(newPostition);
- }
- break;
- }
- }
- currentNode = device;
- //graphWorkArea.repaint();
- //graphDocumentView.update(null, null);
- MainFrame.getInstance().getGraphEditorPanel().repaint();
- }else{
- //ako element nije instanca Node
- System.out.println("kara");
- }
- }
- }
- }
- @Override
- public void keyTyped(KeyEvent e) {
- // TODO Auto-generated method stub
- super.keyTyped(e);
- }
- @Override
- public void mouseWheelMoved(MouseWheelEvent e) {
- // TODO Auto-generated method stub
- super.mouseWheelMoved(e);
- }
- }
- /**********************************************/
- /***********************************************************************
- * Module: ResizeElementCommand.java
- * Author: Spremo
- * Purpose: Defines the Class ResizeElementCommand
- ***********************************************************************/
- package model.graph.commands;
- import java.awt.geom.Point2D;
- import view.MainFrame;
- import model.graph.Node;
- public class ResizeElementCommand extends model.genericFunctions.Command {
- private double oldXscale, oldYscale;
- private Point2D oldPosition;
- private Node currentNode;
- private Point2D newPosition;
- private double newXscale, newYscale;
- public ResizeElementCommand(double oldXscale, double oldYscale,
- Point2D oldPosition, Node currentNode) {
- super();
- this.oldXscale = oldXscale;
- this.oldYscale = oldYscale;
- this.oldPosition = oldPosition;
- this.currentNode = currentNode;
- this.newPosition = currentNode.getPosition();
- this.newXscale = currentNode.getScaleX();
- this.newYscale = currentNode.getScaleY();
- }
- public void execute() {
- MainFrame.getInstance().getGraphEditorPanel().getGraphDocumentView()
- .getSelection().removeElement(currentNode);
- currentNode.setPosition(newPosition);
- currentNode.setScaleX(newXscale);
- currentNode.setScaleY(newYscale);
- MainFrame.getInstance().getGraphEditorPanel().getGraphDocumentView()
- .getSelection().addElement(currentNode);
- MainFrame.getInstance().getGraphEditorPanel().repaint();
- }
- public void undo() {
- MainFrame.getInstance().getGraphEditorPanel().getGraphDocumentView()
- .getSelection().removeElement(currentNode);
- currentNode.setPosition(oldPosition);
- currentNode.setScaleX(oldXscale);
- currentNode.setScaleY(oldYscale);
- MainFrame.getInstance().getGraphEditorPanel().getGraphDocumentView()
- .getSelection().addElement(currentNode);
- MainFrame.getInstance().getGraphEditorPanel().repaint();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement