mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-24 04:42:51 -04:00
Change cursor for resize rect controller only on drag
This commit is contained in:
parent
d73cd785be
commit
83bd4deb45
@ -111,7 +111,6 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
private final MouseController mouseRun;
|
||||
private final MouseControllerInsertCopied mouseInsertList;
|
||||
private final MouseControllerResizeRect mouseResizeRect;
|
||||
private final Cursor normalCursor;
|
||||
private final Cursor moveCursor;
|
||||
private final ToolTipAction copyAction;
|
||||
private final ToolTipAction cutAction;
|
||||
@ -239,7 +238,7 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
}
|
||||
});
|
||||
|
||||
normalCursor = new Cursor(Cursor.DEFAULT_CURSOR);
|
||||
Cursor normalCursor = new Cursor(Cursor.DEFAULT_CURSOR);
|
||||
moveCursor = new Cursor(Cursor.MOVE_CURSOR);
|
||||
mouseNormal = new MouseControllerNormal(normalCursor);
|
||||
mouseInsertElement = new MouseControllerInsertElement(normalCursor);
|
||||
@ -1662,7 +1661,7 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
private final class MouseControllerNormal extends MouseController {
|
||||
private Vector pos;
|
||||
private MouseEvent downButton;
|
||||
private VisualElement hoveredElement;
|
||||
private VisualElement pressedElement;
|
||||
|
||||
private MouseControllerNormal(Cursor cursor) {
|
||||
super(cursor);
|
||||
@ -1672,7 +1671,6 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
void activate() {
|
||||
super.activate();
|
||||
pos = null;
|
||||
hoveredElement = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1710,18 +1708,12 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
void pressed(MouseEvent e) {
|
||||
downButton = e;
|
||||
pos = getPosVector(e);
|
||||
pressedElement = getCircuit().getElementAt(pos, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
void moved(MouseEvent e) {
|
||||
Vector p = getPosVector(e);
|
||||
hoveredElement = getCircuit().getElementAt(p, false);
|
||||
if (!isLocked() && hoveredElement != null &&
|
||||
hoveredElement.equalsDescription(DummyElement.RECTDESCRIPTION)) {
|
||||
setCursorForResizingRect(hoveredElement, p);
|
||||
} else {
|
||||
setCursor(normalCursor);
|
||||
}
|
||||
void released(MouseEvent e) {
|
||||
pressedElement = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1730,12 +1722,10 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
Vector p = getPosVector(e);
|
||||
if (pos == null)
|
||||
pos = p;
|
||||
if (!isLocked() && hoveredElement != null &&
|
||||
hoveredElement.equalsDescription(DummyElement.RECTDESCRIPTION)) {
|
||||
mouseResizeRect.activate(hoveredElement, pos);
|
||||
} else {
|
||||
if (pressedElement != null && pressedElement.equalsDescription(DummyElement.RECTDESCRIPTION))
|
||||
mouseResizeRect.activate(pressedElement, pos);
|
||||
else
|
||||
mouseSelect.activate(pos, p);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return !mouse.isSecondaryClick(downButton);
|
||||
@ -2609,6 +2599,8 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
this.element = element;
|
||||
this.startPos = raster(pos);
|
||||
|
||||
setCursorForResizingRect(element, pos);
|
||||
|
||||
// Get current rectangle attributes.
|
||||
rectX = element.getPos().x;
|
||||
rectY = element.getPos().y;
|
||||
@ -2623,6 +2615,41 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
changeWest = posInRect.x == rectWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the cursor for when the mouse hovers nears the border of a rectangle.
|
||||
*
|
||||
* @param rect The rectangle element.
|
||||
* @param pos Current mouse position in circuit coordinates.
|
||||
*/
|
||||
public void setCursorForResizingRect(VisualElement rect, Vector pos) {
|
||||
Vector posInRect = raster(pos.sub(rect.getPos()));
|
||||
int width = rect.getElementAttributes().get(Keys.RECT_WIDTH) * SIZE;
|
||||
int height = rect.getElementAttributes().get(Keys.RECT_HEIGHT) * SIZE;
|
||||
int cursor;
|
||||
if (posInRect.x == width) {
|
||||
if (posInRect.y <= 0) {
|
||||
cursor = Cursor.NE_RESIZE_CURSOR;
|
||||
} else if (posInRect.y == height) {
|
||||
cursor = Cursor.SE_RESIZE_CURSOR;
|
||||
} else {
|
||||
cursor = Cursor.E_RESIZE_CURSOR;
|
||||
}
|
||||
} else if (posInRect.x == 0) {
|
||||
if (posInRect.y <= 0) {
|
||||
cursor = Cursor.NW_RESIZE_CURSOR;
|
||||
} else if (posInRect.y == height) {
|
||||
cursor = Cursor.SW_RESIZE_CURSOR;
|
||||
} else {
|
||||
cursor = Cursor.W_RESIZE_CURSOR;
|
||||
}
|
||||
} else if (posInRect.y <= 0) {
|
||||
cursor = Cursor.N_RESIZE_CURSOR;
|
||||
} else {
|
||||
cursor = Cursor.S_RESIZE_CURSOR;
|
||||
}
|
||||
setCursor(new Cursor(cursor));
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean dragged(MouseEvent e) {
|
||||
ElementAttributes attributes = element.getElementAttributes();
|
||||
@ -2682,41 +2709,6 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the cursor for when the mouse hovers nears the border of a rectangle.
|
||||
*
|
||||
* @param rect The rectangle element.
|
||||
* @param pos Current mouse position in circuit coordinates.
|
||||
*/
|
||||
public void setCursorForResizingRect(VisualElement rect, Vector pos) {
|
||||
Vector posInRect = raster(pos.sub(rect.getPos()));
|
||||
int width = rect.getElementAttributes().get(Keys.RECT_WIDTH) * SIZE;
|
||||
int height = rect.getElementAttributes().get(Keys.RECT_HEIGHT) * SIZE;
|
||||
int cursor;
|
||||
if (posInRect.x == width) {
|
||||
if (posInRect.y <= 0) {
|
||||
cursor = Cursor.NE_RESIZE_CURSOR;
|
||||
} else if (posInRect.y == height) {
|
||||
cursor = Cursor.SE_RESIZE_CURSOR;
|
||||
} else {
|
||||
cursor = Cursor.E_RESIZE_CURSOR;
|
||||
}
|
||||
} else if (posInRect.x == 0) {
|
||||
if (posInRect.y <= 0) {
|
||||
cursor = Cursor.NW_RESIZE_CURSOR;
|
||||
} else if (posInRect.y == height) {
|
||||
cursor = Cursor.SW_RESIZE_CURSOR;
|
||||
} else {
|
||||
cursor = Cursor.W_RESIZE_CURSOR;
|
||||
}
|
||||
} else if (posInRect.y <= 0) {
|
||||
cursor = Cursor.N_RESIZE_CURSOR;
|
||||
} else {
|
||||
cursor = Cursor.S_RESIZE_CURSOR;
|
||||
}
|
||||
setCursor(new Cursor(cursor));
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate a wizard
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user