Skip to content

Commit

Permalink
Dramatically improved the object table thing
Browse files Browse the repository at this point in the history
  • Loading branch information
Crazydiamonde committed May 24, 2024
1 parent bbbcbb7 commit cf0d176
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,13 @@ public class ObjectCreator {

public static EditorObject create(String _name, EditorObject _parent) {

boolean shouldStop = _name.startsWith("_");
String name = shouldStop ? _name.substring(1) : _name;


WorldLevel level = LevelManager.getLevel();

EditorObject parent = (_parent != null || level == null) ? _parent : switch(_name) {
EditorObject parent = (_parent != null || level == null) ? _parent : switch(name) {

case "linearforcefield", "radialforcefield", "particles",
"SceneLayer", "buttongroup", "button", "circle",
Expand All @@ -41,7 +45,7 @@ public static EditorObject create(String _name, EditorObject _parent) {

};

EditorObject toAdd = switch (_name) {
EditorObject toAdd = switch (name) {
case "addin", "Addin_addin" -> new Addin(parent);
case "Addin_id" -> new AddinID(parent);
case "Addin_name" -> new AddinName(parent);
Expand Down Expand Up @@ -114,11 +118,11 @@ public static EditorObject create(String _name, EditorObject _parent) {
};

if (toAdd == null) {
logger.error("Attempted to create an invalid object: \"" + _name + "\"");
logger.error("Attempted to create an invalid object: \"" + name + "\"");
return null;
}

if (parent != null) toAdd.setParent(parent);
if (parent != null && !shouldStop) toAdd.setParent(parent);

return toAdd;

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/woogleFX/engine/fx/FXHierarchy.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ protected void updateItem(String item, boolean empty) {

}


private static final TabPane hierarchySwitcherButtons = new TabPane();
public static TabPane getHierarchySwitcherButtons() {
return hierarchySwitcherButtons;
Expand Down Expand Up @@ -115,8 +116,6 @@ public static void hierarchySwitcherButtons() {

});

hierarchy.sort();

}

}
35 changes: 22 additions & 13 deletions src/main/java/com/woogleFX/functions/HierarchyManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import javafx.scene.layout.StackPane;

import java.io.FileNotFoundException;
import java.util.List;
import java.util.stream.Stream;

public class HierarchyManager {

Expand All @@ -33,12 +35,6 @@ public static Image getObjectIcon(EditorObject editorObject) {
}


private static EditorObject objectBeingDragged;
public static EditorObject getObjectBeingDragged() {
return objectBeingDragged;
}


private static int oldDropIndex;
public static int getOldDropIndex() {
return oldDropIndex;
Expand All @@ -57,7 +53,7 @@ public static void updateNameCell(TreeTableCell<EditorObject, String> cell, Stri
// Update this cell's text.
cell.setText(item);
// Override the default padding that ruins the text.
cell.setPadding(new Insets(0, 0, 0, 0));
cell.setPadding(new Insets(-2, 0, 0, 3));
}

}
Expand All @@ -74,7 +70,7 @@ public static void updateElementCell(TreeTableCell<EditorObject, String> cell, S
// Update this cell's text.
cell.setText(item);
// Override the default padding that ruins the text.
cell.setPadding(new Insets(0, 0, 0, 0));
cell.setPadding(new Insets(-2, 0, 0, 3));

if (cell.getTableRow().getItem() != null) {
ImageView imageView;
Expand Down Expand Up @@ -119,20 +115,28 @@ public static boolean handleDragDrop(TreeTableView<EditorObject> hierarchy, Tree
int direction = (int)Math.signum(toIndex - fromIndex);
if (direction == 0) return false;

if (direction > 0) toIndex -= 1;

EditorObject toItem = hierarchy.getTreeItem(toIndex).getValue();
EditorObject fromItem = hierarchy.getTreeItem(fromIndex).getValue();

// YOU CAN'T PUT AN OBJECT INSIDE ITSELF
if (toItem.getChildren().contains(fromItem)) return false;

// Or inside an object that doesn't have it as a possible child
if (Stream.of(toItem.getParent().getPossibleChildren()).noneMatch(e -> e.equals(fromItem.getType()))) return false;

// Add the dragged item just above the item that it gets dragged to
int indexOfToItem = toItem.getParent().getChildren().indexOf(toItem);
int indexOfToTreeItem = toItem.getParent().getTreeItem().getChildren().indexOf(toItem.getTreeItem());

fromItem.getParent().getChildren().remove(fromItem);
fromItem.getParent().getTreeItem().getChildren().remove(fromItem.getTreeItem());

fromItem.setParent(toItem.getParent(), indexOfToItem);

hierarchy.getSelectionModel().select(indexOfToTreeItem);
hierarchy.getSelectionModel().select(toIndex);

UndoManager.registerChange(new HierarchyDragAction(HierarchyManager.getObjectBeingDragged(), HierarchyManager.getOldDropIndex(), toIndex));
UndoManager.registerChange(new HierarchyDragAction(fromItem, HierarchyManager.getOldDropIndex(), toIndex));
UndoManager.clearRedoActions();

return true;
Expand Down Expand Up @@ -161,19 +165,22 @@ public static TreeTableRow<EditorObject> createRow(TreeTableView<EditorObject> h
ClipboardContent content = new ClipboardContent();
content.putString(selected2.getValue().getClass().getName());
db.setContent(content);
objectBeingDragged = row.getItem();
oldDropIndex = row.getIndex();
event.consume();
}
});

row.setOnDragExited(event -> {
// row.setStyle("");
row.setStyle("-fx-border-width: 0 0 0 0;");
row.setPadding(new Insets(1, 0, 0, 0));
});

row.setOnDragOver(event -> {
if (event.getDragboard().hasString()) {
event.acceptTransferModes(TransferMode.MOVE);
row.setStyle("-fx-border-color: #0000ff; -fx-border-width: 2 0 0 0;");
row.setPadding(new Insets(-1, 0, 0, 0));
// row.setStyle("-fx-font-size: 12pt, -fx-background-color: #D0F0FFFF");
}
event.consume();
Expand All @@ -185,6 +192,8 @@ public static TreeTableRow<EditorObject> createRow(TreeTableView<EditorObject> h
event.consume();
});

row.setPadding(new Insets(1, 0, 0, 0));

return row;

}
Expand All @@ -202,7 +211,7 @@ public static ContextMenu contextMenuForEditorObject(EditorObject object) {
MenuItem addItemItem = new MenuItem("Add " + childToAdd);

// Attempt to set graphics for this menu item.
addItemItem.setGraphic(new ImageView(HierarchyManager.getObjectIcon(ObjectCreator.create(childToAdd, null))));
addItemItem.setGraphic(new ImageView(HierarchyManager.getObjectIcon(ObjectCreator.create("_" + childToAdd, null))));

// Set the item's action to creating the child, with the object as its parent.
addItemItem.setOnAction(event -> ObjectAdder.addObject(childToAdd, object));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ private static void primaryMouseButton(MouseEvent event) {

if (level.getSelected() != null) ifSelectedAlreadyExists(level);

if (event.getY() < FXCanvas.getMouseYOffset()) return;

if (SelectionManager.getMode() == SelectionManager.SELECTION) manageSelection(event, level);
else if (SelectionManager.getMode() == SelectionManager.STRAND) tryToPlaceStrand(event, level);

Expand Down Expand Up @@ -116,6 +118,7 @@ private static void manageSelection(MouseEvent event, WorldLevel level) {
FXPropertiesView.changeTableView(selected);
if (selected.getParent() != null) selected.getParent().getTreeItem().setExpanded(true);
FXHierarchy.getHierarchy().getSelectionModel().select(selected.getTreeItem());
FXHierarchy.getHierarchy().scrollTo(FXHierarchy.getHierarchy().getRow(selected.getTreeItem()));

}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/worldOfGoo/scene/Button.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ public Button(EditorObject _parent) {
super(_parent, "button", "scene\\button");

addAttribute("id", InputField.ANY) .assertRequired();
addAttribute("depth", InputField.NUMBER).assertRequired();
addAttribute("x", InputField.NUMBER).assertRequired();
addAttribute("depth", InputField.NUMBER).setDefaultValue("0") .assertRequired();
addAttribute("x", InputField.NUMBER) .assertRequired();
addAttribute("y", InputField.NUMBER).setDefaultValue("0") .assertRequired();
addAttribute("scalex", InputField.NUMBER).setDefaultValue("1") .assertRequired();
addAttribute("scaley", InputField.NUMBER).setDefaultValue("1") .assertRequired();
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/worldOfGoo/scene/Hinge.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public double getHeight() {
return 15;
}
public double getEdgeSize() {
return 2;
return 4;
}
public boolean isEdgeOnly() {
return true;
Expand Down
25 changes: 13 additions & 12 deletions src/main/resources/style.css
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
.tree-table-row-cell:hover {
-fx-background-color: lightblue;
.tree-table-row-cell:filled:even {
-fx-background-color: #f6f6f6;
}

#work {
-fx-background-color:
#b5b5b5,
linear-gradient(#f0f0f0, #f0f0f0);
.tree-table-row-cell:filled:odd {
-fx-background-color: #ffffff;
}

.tree-table-row-cell:filled:hover {
-fx-background-color: #c0e0ff;
}

.tree-table-row-cell:filled:selected .tree-table-cell {
-fx-background-color: #a0b0ff;
-fx-text-fill: #000000;
}

.button {
-fx-background-insets: 0,0,0;
-fx-padding: 0 0 0 0;
}

#thing {
-fx-background-color:
#b5b5b5,
linear-gradient(#f0f0f0, #f0f0f0);
}

.tooltip {
-fx-border-color: #767676;
-fx-background-color: #FFFFFF;
Expand Down

0 comments on commit cf0d176

Please sign in to comment.