Add delete shape operation
This commit is contained in:
@@ -6,12 +6,14 @@ import ovh.gasser.newshapes.Selection;
|
||||
import ovh.gasser.newshapes.shapes.SCollection;
|
||||
import ovh.gasser.newshapes.shapes.Shape;
|
||||
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.Optional;
|
||||
|
||||
public class Controller {
|
||||
private final static Logger logger = LoggerFactory.getLogger(ShapesView.class);
|
||||
private final static Logger logger = LoggerFactory.getLogger(Controller.class);
|
||||
private final ShapesView view;
|
||||
private final Shape model;
|
||||
private Selection selection;
|
||||
@@ -19,6 +21,7 @@ public class Controller {
|
||||
Controller(ShapesView view, Shape model) {
|
||||
this.view = view;
|
||||
this.model = model;
|
||||
|
||||
var adapter = new MouseAdapter() {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent evt) {
|
||||
@@ -32,6 +35,16 @@ public class Controller {
|
||||
};
|
||||
this.view.addMouseMotionListener(adapter);
|
||||
this.view.addMouseListener(adapter);
|
||||
|
||||
this.view.setFocusable(true);
|
||||
boolean res = this.view.requestFocusInWindow();
|
||||
assert res;
|
||||
this.view.addKeyListener(new KeyAdapter() {
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
handleKeyPressed(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void handleMouseDragged(MouseEvent evt) {
|
||||
@@ -55,6 +68,26 @@ public class Controller {
|
||||
view.repaint();
|
||||
}
|
||||
|
||||
private void handleKeyPressed(KeyEvent evt) {
|
||||
switch (evt.getKeyCode()) {
|
||||
case KeyEvent.VK_DELETE:
|
||||
deleteSelected();
|
||||
break;
|
||||
default:
|
||||
logger.warn("Pressed unhandled key: {}", evt.getKeyChar());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteSelected() {
|
||||
if (selection == null) return;
|
||||
logger.debug("Deleting selected shape(s)");
|
||||
var sc = (SCollection) this.model;
|
||||
sc.remove(selection.shape);
|
||||
selection = null;
|
||||
view.repaint();
|
||||
}
|
||||
|
||||
private void resetSelection() {
|
||||
logger.debug("Un-selecting {}", selection.shape);
|
||||
selection.unselect();
|
||||
|
||||
Reference in New Issue
Block a user