Skip to content
Snippets Groups Projects
Commit 3a7db9ca authored by BrunoDatoMeneses's avatar BrunoDatoMeneses
Browse files

MOD: vuiMulti non static constructor

parent 89f4873c
No related branches found
No related tags found
1 merge request!4Exp rein
...@@ -133,47 +133,10 @@ public class VUIMulti { ...@@ -133,47 +133,10 @@ public class VUIMulti {
*/ */
private double worldCenterY = defaultWorldCenterY; private double worldCenterY = defaultWorldCenterY;
/**
* Used to be sure that only one thread at the same time create a VUI
*/
private static ReentrantLock instanceLock = new ReentrantLock();
/**
* Get the default VUI
*
* @return the default VUI
*/
public static VUIMulti getDefault() {
return get("Default");
}
public void addTabbedDefaultPanel(AmasMultiUIWindow window) {
window.addTabbedPanel("Default VUI", getPanel());
}
/**
* Create or get a VUI.<br/>
* You have add its panel to the MainWindow yourself.
*
* @param id
* The unique id of the VUI
* @return The VUI with id "id"
*/
public static VUIMulti get(String id) {
instanceLock.lock();
VUIMulti value = new VUIMulti(id);
instanceLock.unlock();
return value;
}
public VUIMulti() {
}
/** /**
* Constructor of the VUI. This one is private as it can only be created through * Constructor of the VUI. This one is private as it can only be created through
* static method. * static method.
...@@ -181,113 +144,105 @@ public class VUIMulti { ...@@ -181,113 +144,105 @@ public class VUIMulti {
* @param title * @param title
* The title used for the vui * The title used for the vui
*/ */
private VUIMulti(String titleValue) { public VUIMulti(String titleValue) {
this.title = titleValue; this.title = titleValue;
Semaphore done = new Semaphore(0); panel = new BorderPane();
RunLaterHelper.runLater(() -> {
panel = new BorderPane(); toolbar = new ToolBar();
statusLabel = new Label("status");
toolbar = new ToolBar(); statusLabel.setTextAlignment(TextAlignment.LEFT);
statusLabel = new Label("status"); toolbar.getItems().add(statusLabel);
statusLabel.setTextAlignment(TextAlignment.LEFT); panel.setBottom(toolbar);
toolbar.getItems().add(statusLabel);
panel.setBottom(toolbar); Button resetButton = new Button("Reset");
resetButton.setOnAction(new EventHandler<ActionEvent>() {
Button resetButton = new Button("Reset"); @Override
resetButton.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent event) {
@Override zoom = defaultZoom;
public void handle(ActionEvent event) { worldCenterX = defaultWorldCenterX;
zoom = defaultZoom; worldCenterY = defaultWorldCenterY;
worldCenterX = defaultWorldCenterX; updateCanvas();
worldCenterY = defaultWorldCenterY; }
updateCanvas(); });
} toolbar.getItems().add(resetButton);
});
toolbar.getItems().add(resetButton); canvas = new Pane();
canvas.setBackground(new Background(new BackgroundFill(Color.WHITE, CornerRadii.EMPTY, Insets.EMPTY)));
canvas = new Pane(); // clip the canvas (avoid drawing outside of it)
canvas.setBackground(new Background(new BackgroundFill(Color.WHITE, CornerRadii.EMPTY, Insets.EMPTY))); Rectangle clip = new Rectangle(0, 0, 0, 0);
// clip the canvas (avoid drawing outside of it) clip.widthProperty().bind(canvas.widthProperty());
Rectangle clip = new Rectangle(0, 0, 0, 0); clip.heightProperty().bind(canvas.heightProperty());
clip.widthProperty().bind(canvas.widthProperty()); canvas.setClip(clip);
clip.heightProperty().bind(canvas.heightProperty());
canvas.setClip(clip); canvas.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
canvas.setOnMousePressed(new EventHandler<MouseEvent>() { public void handle(MouseEvent event) {
@Override lastDragX = event.getX();
public void handle(MouseEvent event) { lastDragY = event.getY();
}
});
canvas.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
lastDragX = null;
lastDragY = null;
}
});
canvas.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
try {
double transX = screenToWorldDistance(event.getX() - lastDragX);
double transY = screenToWorldDistance(event.getY() - lastDragY);
worldCenterX += transX;
worldCenterY += transY;
worldOffsetX += transX;
worldOffsetY += transY;
lastDragX = event.getX(); lastDragX = event.getX();
lastDragY = event.getY(); lastDragY = event.getY();
}
});
canvas.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
lastDragX = null;
lastDragY = null;
}
});
canvas.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
try {
double transX = screenToWorldDistance(event.getX() - lastDragX);
double transY = screenToWorldDistance(event.getY() - lastDragY);
worldCenterX += transX;
worldCenterY += transY;
worldOffsetX += transX;
worldOffsetY += transY;
lastDragX = event.getX();
lastDragY = event.getY();
updateCanvas();
} catch (Exception ez) {
// Catch exception occurring when mouse is out of the canvas
}
}
});
canvas.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
double wdx = screenToWorldDistance(canvas.getWidth() / 2 - event.getX());
double wdy = screenToWorldDistance(canvas.getHeight() / 2 - event.getY());
zoom += event.getDeltaY() / event.getMultiplierY() * 10;
if (zoom < 10)
zoom = 10;
double wdx2 = screenToWorldDistance(canvas.getWidth() / 2 - event.getX());
double wdy2 = screenToWorldDistance(canvas.getHeight() / 2 - event.getY());
worldCenterX -= wdx2 - wdx;
worldCenterY -= wdy2 - wdy;
updateCanvas(); updateCanvas();
} catch (Exception ez) {
// Catch exception occurring when mouse is out of the canvas
} }
}); }
});
panel.setCenter(canvas); canvas.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
//add VuiExplorer public void handle(ScrollEvent event) {
vuiExplorer = new VuiExplorer(this); double wdx = screenToWorldDistance(canvas.getWidth() / 2 - event.getX());
panel.setLeft(vuiExplorer); double wdy = screenToWorldDistance(canvas.getHeight() / 2 - event.getY());
Button veButton = new Button("VUI explorer"); zoom += event.getDeltaY() / event.getMultiplierY() * 10;
veButton.setOnAction(new EventHandler<ActionEvent>() { if (zoom < 10)
@Override zoom = 10;
public void handle(ActionEvent event) {
panel.setLeft(vuiExplorer); double wdx2 = screenToWorldDistance(canvas.getWidth() / 2 - event.getX());
} double wdy2 = screenToWorldDistance(canvas.getHeight() / 2 - event.getY());
}); worldCenterX -= wdx2 - wdx;
veButton.setTooltip(new Tooltip("Show the VUI explorer if it was hidden.")); worldCenterY -= wdy2 - wdy;
toolbar.getItems().add(veButton); updateCanvas();
}
});
panel.setCenter(canvas);
//add VuiExplorer
vuiExplorer = new VuiExplorer(this);
panel.setLeft(vuiExplorer);
Button veButton = new Button("VUI explorer");
veButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
panel.setLeft(vuiExplorer);
}
});
veButton.setTooltip(new Tooltip("Show the VUI explorer if it was hidden."));
toolbar.getItems().add(veButton);
done.release();
});
try {
done.acquire();
} catch (InterruptedException e) {
System.err.println("Failed to make sure that the VUI is correctly initialized.");
e.printStackTrace();
}
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment