72 public NodesStorage(PropertiesTable pt, Node storageOfControlElements) { 73 this.pt = pt; 74 this.storageOfControlElements = storageOfControlElements; 75 this.storageOfTable = pt; 76 77 this.getChildren().addAll(storageOfControlElements, storageOfTable); 78 } 79 } 80 81 public interface ControllingNodesCreator<T extends Object> { 82 83 public abstract Node getForNode(T node, TabPaneWithControl tabPane); 84 } 85 86 public static class ToolBarControllers extends HBox implements ControllingNodesCreator<ToolBar> { 87 88 public final String TOOLBAR_ADD_INDEX_TEXT_FIELD_ID = "TOOLBAR_ADD_INDEX_TEXT_FIELD_ID"; 89 90 @Override 91 public Node getForNode(final ToolBar toolBar, final TabPaneWithControl tabPane) { 92 final TextField tf = TextFieldBuilder.create().id(TOOLBAR_ADD_INDEX_TEXT_FIELD_ID).text("0").prefWidth(40).build(); 93 94 this.getChildren().addAll(new NodesChoserFactory("Add!", new NodesChoserFactory.NodeAction<Node>() { 95 @Override 96 public void execute(Node node) { 97 toolBar.getItems().add(Integer.parseInt(tf.getText()), node); 98 try { 99 tabPane.addPropertiesTable(node.getClass().getSimpleName(), NodeControllerFactory.createFullController(node, tabPane)); 100 } catch (Throwable ex) { 101 Logger.getLogger(NodeControllerFactory.class.getName()).log(Level.SEVERE, null, ex); 102 } 103 } 104 }, tf).getChildren()); 105 106 return this; 107 } 108 } 109 110 public static class MenuControllers extends HBox implements ControllingNodesCreator<Menu> { 111 112 public final String MENU_ADD_INDEX_TEXT_FIELD_ID = "MENU_ADD_INDEX_TEXT_FIELD_ID"; 113 public final String MENU_ADD_NAME_TEXT_FIELD_ID = "MENU_ADD_NAME_TEXT_FIELD_ID"; 114 115 @Override 116 public Node getForNode(final Menu menu, final TabPaneWithControl tabPane) { 117 final TextField tf = TextFieldBuilder.create().id(MENU_ADD_INDEX_TEXT_FIELD_ID).text("0").prefWidth(40).build(); 118 final TextField nameTF = TextFieldBuilder.create().id(MENU_ADD_NAME_TEXT_FIELD_ID).text("Menu").prefWidth(40).build(); 119 this.getChildren().addAll(new NodesChoserFactory("Add!", new NodesChoserFactory.NodeAction<MenuItem>() { 120 @Override 121 public void execute(MenuItem node) { 122 node.setText(nameTF.getText()); 123 menu.getItems().add(Integer.parseInt(tf.getText()), node); 124 try { 125 tabPane.addPropertiesTable(nameTF.getText(), NodeControllerFactory.createFullController(node, tabPane)); 126 } catch (Throwable ex) { 127 Logger.getLogger(NodeControllerFactory.class.getName()).log(Level.SEVERE, null, ex); 128 } 129 } 130 }, tf, nameTF).getChildren()); 131 132 return this; 133 } 134 } 135 136 public static class TreeItemControllers extends FlowPane implements ControllingNodesCreator<TreeItem> { 137 138 public static final String GET_NEXT_SIBLING_TREEITEM_BUTTON_ID = "GET_NEXT_SIBLING_TREEITEM_BUTTON_ID"; 139 public static final String GET_NEXT_SIBLING_TREEITEM_TEXTFIELD_ID = "GET_NEXT_SIBLING_TREEITEM_TEXTFIELD_ID"; 140 public static final String GET_PREVIOUS_SIBLING_TREEITEM_BUTTON_ID = "GET_PREVIOUS_SIBLING_TREEITEM_BUTTON_ID"; 141 public static final String GET_PREVIOUS_SIBLING_TREEITEM_TEXTFIELD_ID = "GET_PREVIOUS_SIBLING_TREEITEM_TEXTFIELD_ID"; 142 public final static String CHANGE_VALUE_BUTTON_ID = "CHANGE_VALUE_BUTTON_ID"; 143 public final static String NEW_VALUE_TEXT_FIELD_ID = "NEW_VALUE_TEXT_FIELD_ID"; 144 145 @Override 146 public Node getForNode(final TreeItem item, final TabPaneWithControl tabPane) { 147 HBox hb1 = getNextSiblingHBox(item); 148 HBox hb2 = getPreviousSiblingHBox(item); 149 HBox hb3 = getChangeValueHBox(item); 150 151 this.getChildren().addAll(hb1, hb2, hb3); 152 153 return this; 154 } 155 156 private HBox getPreviousSiblingHBox(final TreeItem item) { 157 HBox hb = new HBox(); 158 Button button = ButtonBuilder.create().text("Get previous sibling").id(GET_PREVIOUS_SIBLING_TREEITEM_BUTTON_ID).build(); 159 final TextField tf = TextFieldBuilder.create().text("").promptText("Next sibling").id(GET_PREVIOUS_SIBLING_TREEITEM_TEXTFIELD_ID).prefWidth(100).build(); 160 161 button.setOnAction(new EventHandler<ActionEvent>() { 162 public void handle(ActionEvent t) { 163 TreeItem sibling = item.previousSibling(); 164 TreeItem sibling2 = item.previousSibling(item); 165 if (sibling == null) { 166 if (sibling2 == null) { 167 tf.setText("null"); 168 } else { 169 tf.setText("ERROR"); 170 } 171 } else { 172 if (sibling.equals(sibling2)) { 173 tf.setText(sibling.getValue().toString()); 174 } else { 175 tf.setText("ERROR"); 176 } 177 } 178 } 179 }); 180 181 hb.getChildren().addAll(button, tf); 182 return hb; 183 } 184 185 private HBox getNextSiblingHBox(final TreeItem item) { 186 HBox hb = new HBox(); 187 Button button = ButtonBuilder.create().text("Get next sibling").id(GET_NEXT_SIBLING_TREEITEM_BUTTON_ID).build(); 188 final TextField tf = TextFieldBuilder.create().text("").promptText("Next sibling").id(GET_NEXT_SIBLING_TREEITEM_TEXTFIELD_ID).prefWidth(100).build(); 189 190 button.setOnAction(new EventHandler<ActionEvent>() { 191 public void handle(ActionEvent t) { 192 TreeItem sibling = item.nextSibling(); 193 if (sibling == null) { 194 tf.setText("null"); 195 } else { 196 tf.setText(sibling.getValue().toString()); 197 } 198 } 199 }); 200 201 hb.getChildren().addAll(button, tf); 202 return hb; 203 } 204 205 private HBox getChangeValueHBox(final TreeItem item) { 206 Button button = ButtonBuilder.create().text("change value to").id(CHANGE_VALUE_BUTTON_ID).build(); 207 final TextField tfNew = TextFieldBuilder.create().promptText("new value").id(NEW_VALUE_TEXT_FIELD_ID).prefWidth(50).build(); 208 209 button.setOnAction(new EventHandler<ActionEvent>() { 210 public void handle(ActionEvent t) { 211 item.setValue(tfNew.getText()); 212 } 213 }); 214 215 HBox hb = new HBox(); 216 hb.getChildren().addAll(button, tfNew); 217 218 return hb; 219 } 220 } 221 } | 72 public NodesStorage(PropertiesTable pt, Node storageOfControlElements) { 73 this.pt = pt; 74 this.storageOfControlElements = storageOfControlElements; 75 this.storageOfTable = pt; 76 77 this.getChildren().addAll(storageOfControlElements, storageOfTable); 78 } 79 } 80 81 public interface ControllingNodesCreator<T extends Object> { 82 83 public abstract Node getForNode(T node, TabPaneWithControl tabPane); 84 } 85 86 public static class ToolBarControllers extends HBox implements ControllingNodesCreator<ToolBar> { 87 88 public final String TOOLBAR_ADD_INDEX_TEXT_FIELD_ID = "TOOLBAR_ADD_INDEX_TEXT_FIELD_ID"; 89 90 @Override 91 public Node getForNode(final ToolBar toolBar, final TabPaneWithControl tabPane) { 92 final TextField tf = new TextField("0"); 93 tf.setId(TOOLBAR_ADD_INDEX_TEXT_FIELD_ID); 94 tf.setPrefWidth(40); 95 96 this.getChildren().addAll(new NodesChoserFactory("Add!", new NodesChoserFactory.NodeAction<Node>() { 97 @Override 98 public void execute(Node node) { 99 toolBar.getItems().add(Integer.parseInt(tf.getText()), node); 100 try { 101 tabPane.addPropertiesTable(node.getClass().getSimpleName(), NodeControllerFactory.createFullController(node, tabPane)); 102 } catch (Throwable ex) { 103 Logger.getLogger(NodeControllerFactory.class.getName()).log(Level.SEVERE, null, ex); 104 } 105 } 106 }, tf).getChildren()); 107 108 return this; 109 } 110 } 111 112 public static class MenuControllers extends HBox implements ControllingNodesCreator<Menu> { 113 114 public final String MENU_ADD_INDEX_TEXT_FIELD_ID = "MENU_ADD_INDEX_TEXT_FIELD_ID"; 115 public final String MENU_ADD_NAME_TEXT_FIELD_ID = "MENU_ADD_NAME_TEXT_FIELD_ID"; 116 117 @Override 118 public Node getForNode(final Menu menu, final TabPaneWithControl tabPane) { 119 final TextField tf = new TextField("0"); 120 tf.setId(MENU_ADD_INDEX_TEXT_FIELD_ID); 121 tf.setPrefWidth(40); 122 final TextField nameTF = new TextField("Menu"); 123 nameTF.setId(MENU_ADD_NAME_TEXT_FIELD_ID); 124 nameTF.setPrefWidth(40); 125 this.getChildren().addAll(new NodesChoserFactory("Add!", new NodesChoserFactory.NodeAction<MenuItem>() { 126 @Override 127 public void execute(MenuItem node) { 128 node.setText(nameTF.getText()); 129 menu.getItems().add(Integer.parseInt(tf.getText()), node); 130 try { 131 tabPane.addPropertiesTable(nameTF.getText(), NodeControllerFactory.createFullController(node, tabPane)); 132 } catch (Throwable ex) { 133 Logger.getLogger(NodeControllerFactory.class.getName()).log(Level.SEVERE, null, ex); 134 } 135 } 136 }, tf, nameTF).getChildren()); 137 138 return this; 139 } 140 } 141 142 public static class TreeItemControllers extends FlowPane implements ControllingNodesCreator<TreeItem> { 143 144 public static final String GET_NEXT_SIBLING_TREEITEM_BUTTON_ID = "GET_NEXT_SIBLING_TREEITEM_BUTTON_ID"; 145 public static final String GET_NEXT_SIBLING_TREEITEM_TEXTFIELD_ID = "GET_NEXT_SIBLING_TREEITEM_TEXTFIELD_ID"; 146 public static final String GET_PREVIOUS_SIBLING_TREEITEM_BUTTON_ID = "GET_PREVIOUS_SIBLING_TREEITEM_BUTTON_ID"; 147 public static final String GET_PREVIOUS_SIBLING_TREEITEM_TEXTFIELD_ID = "GET_PREVIOUS_SIBLING_TREEITEM_TEXTFIELD_ID"; 148 public final static String CHANGE_VALUE_BUTTON_ID = "CHANGE_VALUE_BUTTON_ID"; 149 public final static String NEW_VALUE_TEXT_FIELD_ID = "NEW_VALUE_TEXT_FIELD_ID"; 150 151 @Override 152 public Node getForNode(final TreeItem item, final TabPaneWithControl tabPane) { 153 HBox hb1 = getNextSiblingHBox(item); 154 HBox hb2 = getPreviousSiblingHBox(item); 155 HBox hb3 = getChangeValueHBox(item); 156 157 this.getChildren().addAll(hb1, hb2, hb3); 158 159 return this; 160 } 161 162 private HBox getPreviousSiblingHBox(final TreeItem item) { 163 HBox hb = new HBox(); 164 Button button = new Button("Get previous sibling"); 165 button.setId(GET_PREVIOUS_SIBLING_TREEITEM_BUTTON_ID); 166 final TextField tf = new TextField(""); 167 tf.setPromptText("Next sibling"); 168 tf.setId(GET_PREVIOUS_SIBLING_TREEITEM_TEXTFIELD_ID); 169 tf.setPrefWidth(100); 170 171 button.setOnAction(new EventHandler<ActionEvent>() { 172 public void handle(ActionEvent t) { 173 TreeItem sibling = item.previousSibling(); 174 TreeItem sibling2 = item.previousSibling(item); 175 if (sibling == null) { 176 if (sibling2 == null) { 177 tf.setText("null"); 178 } else { 179 tf.setText("ERROR"); 180 } 181 } else { 182 if (sibling.equals(sibling2)) { 183 tf.setText(sibling.getValue().toString()); 184 } else { 185 tf.setText("ERROR"); 186 } 187 } 188 } 189 }); 190 191 hb.getChildren().addAll(button, tf); 192 return hb; 193 } 194 195 private HBox getNextSiblingHBox(final TreeItem item) { 196 HBox hb = new HBox(); 197 Button button = new Button("Get next sibling"); 198 button.setId(GET_NEXT_SIBLING_TREEITEM_BUTTON_ID); 199 final TextField tf = new TextField(""); 200 tf.setPromptText("Next sibling"); 201 tf.setId(GET_NEXT_SIBLING_TREEITEM_TEXTFIELD_ID); 202 tf.setPrefWidth(100); 203 204 button.setOnAction(new EventHandler<ActionEvent>() { 205 public void handle(ActionEvent t) { 206 TreeItem sibling = item.nextSibling(); 207 if (sibling == null) { 208 tf.setText("null"); 209 } else { 210 tf.setText(sibling.getValue().toString()); 211 } 212 } 213 }); 214 215 hb.getChildren().addAll(button, tf); 216 return hb; 217 } 218 219 private HBox getChangeValueHBox(final TreeItem item) { 220 Button button = new Button("change value to"); 221 button.setId(CHANGE_VALUE_BUTTON_ID); 222 final TextField tfNew = new TextField(); 223 tfNew.setPromptText("new value"); 224 tfNew.setId(NEW_VALUE_TEXT_FIELD_ID); 225 tfNew.setPrefWidth(50); 226 227 button.setOnAction(new EventHandler<ActionEvent>() { 228 public void handle(ActionEvent t) { 229 item.setValue(tfNew.getText()); 230 } 231 }); 232 233 HBox hb = new HBox(); 234 hb.getChildren().addAll(button, tfNew); 235 236 return hb; 237 } 238 } 239 } |