feat: implement SText shape
This commit is contained in:
@@ -6,9 +6,11 @@ import ovh.gasser.newshapes.HTMLExporter;
|
||||
import ovh.gasser.newshapes.Selection;
|
||||
import ovh.gasser.newshapes.attributes.ColorAttributes;
|
||||
import ovh.gasser.newshapes.shapes.SCollection;
|
||||
import ovh.gasser.newshapes.shapes.SText;
|
||||
import ovh.gasser.newshapes.shapes.Shape;
|
||||
import ovh.gasser.newshapes.ui.listeners.SelectionListener;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
@@ -24,6 +26,7 @@ public class Controller {
|
||||
private final Selection selection;
|
||||
|
||||
private Point lastMousePos;
|
||||
private boolean addingText;
|
||||
|
||||
Controller(ShapesView view, SCollection model) {
|
||||
this.view = view;
|
||||
@@ -62,6 +65,11 @@ public class Controller {
|
||||
}
|
||||
|
||||
private void handleMousePressed(MouseEvent evt) {
|
||||
if (addingText) {
|
||||
placeTextAt(evt.getPoint());
|
||||
return;
|
||||
}
|
||||
|
||||
getTarget(evt, this.model)
|
||||
.ifPresentOrElse(
|
||||
s -> {
|
||||
@@ -77,6 +85,22 @@ public class Controller {
|
||||
view.repaint();
|
||||
}
|
||||
|
||||
public void enterTextMode() {
|
||||
addingText = true;
|
||||
}
|
||||
|
||||
private void placeTextAt(Point point) {
|
||||
String input = JOptionPane.showInputDialog(view, "Enter text:", "Add text", JOptionPane.PLAIN_MESSAGE);
|
||||
addingText = false;
|
||||
if (input == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
model.add(SText.create(point.x, point.y, input));
|
||||
resetSelection();
|
||||
view.repaint();
|
||||
}
|
||||
|
||||
private void handleKeyPressed(KeyEvent evt) {
|
||||
switch (evt.getKeyCode()) {
|
||||
case KeyEvent.VK_DELETE -> deleteSelected();
|
||||
|
||||
Reference in New Issue
Block a user