You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by mg...@apache.org on 2017/01/05 22:09:32 UTC
[24/50] cayenne-modeler git commit: Initial crude shimming of Object
Entity relationships tab.
Initial crude shimming of Object Entity relationships tab.
Project: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/commit/04b54a71
Tree: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/tree/04b54a71
Diff: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/diff/04b54a71
Branch: refs/heads/master
Commit: 04b54a719f7c9e46438d13ac99cbb286d4a4a627
Parents: 3514a99
Author: mrg <bl...@gmail.com>
Authored: Sun Oct 2 11:39:47 2016 -0400
Committer: mrg <bl...@gmail.com>
Committed: Sun Oct 2 11:39:47 2016 -0400
----------------------------------------------------------------------
.../layout/ObjectEntityAttributesTabLayout.java | 26 --
.../modeler/layout/ObjectEntityLayout.java | 29 +--
.../ObjectEntityRelationshipsTabLayout.java | 261 +++++++++++++++++++
.../ObjectEntityAttributesTabLayout.fxml | 2 +-
.../resources/layouts/ObjectEntityLayout.fxml | 2 +-
.../ObjectEntityRelationshipsTabLayout.fxml | 180 +++++++++++++
6 files changed, 452 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/04b54a71/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
index 84b6242..e3d368e 100644
--- a/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
+++ b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
@@ -209,30 +209,6 @@ public class ObjectEntityAttributesTabLayout
}
-// private void loadComponents()
-// {
-// try
-// {
-// objectEntityClassTabViewController = new ObjectEntityClassTabLayout(this);
-//
-// loadTab(objectEntityClassTabViewController, classTabAnchorPane);
-// }
-// catch (Exception exception)
-// {
-// // TODO Auto-generated catch block
-// exception.printStackTrace();
-// }
-// }
-
-// public void display(final ObjEntity objEntity)
-// {
-// LOGGER.debug("trying to display: " + objEntity);
-//// attributesTableView.setItems(FXCollections.observableArrayList(objEntity.getAttributes()));
-//
-//// objectEntityClassTabViewController.display(objEntity);
-//// objEntity.getAttributes()
-// }
-
public void tabChanged(final Event event)
{
LOGGER.debug("event: " + event);
@@ -245,8 +221,6 @@ public class ObjectEntityAttributesTabLayout
this.objectEntityAdapter = objectEntityAdapter;
}
-// private void attributesTableViewSelectionListener(ObservableValue obs, ObjectAttributeAdapter oldSelection, ObjectAttributeAdapter newSelection)
-// private ChangeListener<? super ObjectAttributeAdapter> attributesTableViewSelectionListener;
private final ChangeListener<ObjectAttributeAdapter> attributesTableViewSelectionListener = (obs, oldSelection, newSelection) ->
{
final String[] javaTypes = ObjectEntityUtilities.getRegisteredTypeNames();
http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/04b54a71/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityLayout.java b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityLayout.java
index e557898..44ce183 100644
--- a/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityLayout.java
+++ b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityLayout.java
@@ -37,12 +37,13 @@ public class ObjectEntityLayout
private static final Log LOGGER = LogFactory.getLog(ObjectEntityLayout.class);
@FXML
- private AnchorPane classTabAnchorPane, attributesTabAnchorPane;
+ private AnchorPane classTabAnchorPane, attributesTabAnchorPane, relationshipsTabAnchorPane;
// private MainWindowLayout mainWindow;
private ObjectEntityClassTabLayout objectEntityClassTabLayout;
private ObjectEntityAttributesTabLayout objectEntityAttributesTabLayout;
+ private ObjectEntityRelationshipsTabLayout objectEntityRelationshipsTabLayout;
private ObjectEntityAdapter objectEntityAdapter;
@@ -56,11 +57,13 @@ public class ObjectEntityLayout
{
try
{
- objectEntityClassTabLayout = new ObjectEntityClassTabLayout(this);
- objectEntityAttributesTabLayout = new ObjectEntityAttributesTabLayout(this);
+ objectEntityClassTabLayout = new ObjectEntityClassTabLayout(this);
+ objectEntityAttributesTabLayout = new ObjectEntityAttributesTabLayout(this);
+ objectEntityRelationshipsTabLayout = new ObjectEntityRelationshipsTabLayout(this);
loadTab(objectEntityClassTabLayout, classTabAnchorPane);
loadTab(objectEntityAttributesTabLayout, attributesTabAnchorPane);
+ loadTab(objectEntityRelationshipsTabLayout, relationshipsTabAnchorPane);
}
catch (final Exception exception)
{
@@ -69,27 +72,10 @@ public class ObjectEntityLayout
}
}
-// @Override
-// private void loadTab(AnchorPane source, AnchorPane destination)
-// {
-// destination.getChildren().removeAll(destination.getChildren());
-//
-// // Make the detail view fill the pane.
-// AnchorPane.setTopAnchor(source, 0.0);
-// AnchorPane.setLeftAnchor(source, 0.0);
-// AnchorPane.setRightAnchor(source, 0.0);
-// AnchorPane.setBottomAnchor(source, 0.0);
-//
-// destination.getChildren().add(source);
-// }
-
@Deprecated // Unused?
public void display(final ObjEntity objEntity)
{
LOGGER.debug("trying to display: " + objEntity);
-// objectEntityClassTabLayout.display(objEntity);
-// objectEntityAttributesTabLayout.display(objEntity);
-// objEntity.getAttributes()
}
// public void tabChanged(ActionEvent event)
@@ -106,6 +92,7 @@ public class ObjectEntityLayout
objectEntityClassTabLayout.setPropertyAdapter(objectEntityAdapter);
objectEntityAttributesTabLayout.setPropertyAdapter(objectEntityAdapter);
+ objectEntityRelationshipsTabLayout.setPropertyAdapter(objectEntityAdapter);
}
@Override
@@ -115,6 +102,7 @@ public class ObjectEntityLayout
objectEntityClassTabLayout.beginEditing();
objectEntityAttributesTabLayout.beginEditing();
+ objectEntityRelationshipsTabLayout.beginEditing();
}
@Override
@@ -124,5 +112,6 @@ public class ObjectEntityLayout
objectEntityClassTabLayout.endEditing();
objectEntityAttributesTabLayout.endEditing();
+ objectEntityRelationshipsTabLayout.endEditing();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/04b54a71/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityRelationshipsTabLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityRelationshipsTabLayout.java b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityRelationshipsTabLayout.java
new file mode 100644
index 0000000..96ef74a
--- /dev/null
+++ b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityRelationshipsTabLayout.java
@@ -0,0 +1,261 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.layout;
+
+import java.io.IOException;
+
+import org.apache.cayenne.modeler.adapters.ObjectAttributeAdapter;
+import org.apache.cayenne.modeler.adapters.ObjectEntityAdapter;
+import org.apache.cayenne.modeler.utility.ObjectEntityUtilities;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import de.jensd.fx.glyphs.GlyphsDude;
+import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
+import javafx.beans.value.ChangeListener;
+import javafx.event.Event;
+import javafx.fxml.FXML;
+import javafx.geometry.Pos;
+import javafx.scene.control.Button;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.Label;
+import javafx.scene.control.TableCell;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+public class ObjectEntityRelationshipsTabLayout
+ extends AbstractViewLayout
+ implements DetailEditorSupport<ObjectEntityAdapter>
+{
+ private static final Log LOGGER = LogFactory.getLog(ObjectEntityRelationshipsTabLayout.class);
+
+ @FXML
+ private Button newRelationshipButton;
+
+ @FXML
+ private Button synchronizeWithDatabaseEntityButton, viewRelatedDatabaseEntityButton;
+
+ @FXML
+ private Button deleteButton;
+
+ @FXML
+ private Button cutButton, copyButton, pasteButton;
+
+ @FXML
+ private TextField javaAttributeNameTextField;
+
+ @FXML
+ private ComboBox<String> javaTypeComboBox;
+
+ @FXML
+ private CheckBox optimisticLockingCheckBox;
+
+ @FXML
+ private TableView<ObjectAttributeAdapter> relationshipsTableView;
+
+ @FXML
+ private TableColumn<ObjectAttributeAdapter,String> relationshipNameColumn;
+
+ @FXML
+ private TableColumn<ObjectAttributeAdapter,String> relationshipTargetColumn;
+// private TableColumn<ObjAttribute,ComboBox<String>> attributeTypeColumn;
+
+ @FXML
+ private TableColumn<ObjectAttributeAdapter,String> attributeDatabasePathColumn;
+
+ @FXML
+ private TableColumn<ObjectAttributeAdapter,String> attributeDatabaseTypeColumn;
+
+ @FXML
+ private TableColumn<ObjectAttributeAdapter,Boolean> attributeUsedForLockingColumn;
+
+ @FXML
+ private TableColumn<ObjectAttributeAdapter,Boolean> attributeIsInheritedColumn;
+
+ @FXML
+ private Label databaseTypeLabel;
+
+// private MainWindowSupport parent;
+
+ private ObjectEntityClassTabLayout objectEntityClassTabViewController;
+
+ private ObjectEntityAdapter objectEntityAdapter;
+
+ public ObjectEntityRelationshipsTabLayout(final MainWindowSupport parentComponent) throws IOException
+ {
+ super(parentComponent, "/layouts/ObjectEntityRelationshipsTabLayout.fxml");
+ }
+
+// private static ObservableList javaTypes = FXCollections.observableArrayList(ObjectEntityUtilities.getRegisteredTypeNames());
+
+// @FXML
+// private Button newAttributeButton;
+//
+// @FXML
+// private Button synchronizeWithDatabaseEntityButton, viewRelatedDatabaseEntityButton;
+//
+// @FXML
+// private Button deleteButton;
+//
+// @FXML
+// private Button cutButton, copyButton, pasteButton;
+
+ @Override
+ public void initializeLayout()
+ {
+ super.initializeLayout();
+
+ newRelationshipButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.PLUS, "16px"));
+ newRelationshipButton.setText(null);
+
+ synchronizeWithDatabaseEntityButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.REFRESH, "16px"));
+ synchronizeWithDatabaseEntityButton.setText(null);
+
+ viewRelatedDatabaseEntityButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.TABLE, "16px"));
+ viewRelatedDatabaseEntityButton.setText(null);
+
+ deleteButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.TRASH, "16px"));
+ deleteButton.setText(null);
+
+ cutButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.CUT, "16px"));
+ cutButton.setText(null);
+
+ copyButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.COPY, "16px"));
+ copyButton.setText(null);
+
+ pasteButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.PASTE, "16px"));
+ pasteButton.setText(null);
+
+ attributeUsedForLockingColumn.setText(null);
+ attributeIsInheritedColumn.setText(null);
+
+ attributeUsedForLockingColumn.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.LOCK, "16px"));
+ attributeIsInheritedColumn.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.LEVEL_UP, "16px"));
+
+ relationshipNameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
+ relationshipTargetColumn.setCellValueFactory(cellData -> cellData.getValue().javaTypeProperty());
+ attributeDatabasePathColumn.setCellValueFactory(cellData -> cellData.getValue().databaseAttributePathProperty());
+ // FIXME: See if there is a way of doing this without using the string "databaseType"...
+ attributeDatabaseTypeColumn.setCellValueFactory(new PropertyValueFactory<ObjectAttributeAdapter,String>("databaseType"));
+
+ attributeUsedForLockingColumn.setCellValueFactory(cellData -> cellData.getValue().usedForLockingProperty());
+ attributeUsedForLockingColumn.setCellFactory((column) ->
+ {
+ return new TableCell<ObjectAttributeAdapter,Boolean>()
+ {
+ @Override
+ protected void updateItem(final Boolean item, final boolean empty)
+ {
+ super.updateItem(item, empty);
+
+ setAlignment(Pos.CENTER);
+ setStyle("-fx-padding: 0;");
+ setText("");
+
+ if (item == null || empty || item == false)
+ setGraphic(null);
+ else
+ setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.LOCK, "16px"));
+ }
+ };
+ });
+ }
+
+ public void tabChanged(final Event event)
+ {
+ LOGGER.debug("event: " + event);
+ getMainWindow().getCayenneProject().getDataMaps();
+ }
+
+ @Override
+ public void setPropertyAdapter(final ObjectEntityAdapter objectEntityAdapter)
+ {
+ this.objectEntityAdapter = objectEntityAdapter;
+ }
+
+ private final ChangeListener<ObjectAttributeAdapter> attributesTableViewSelectionListener = (obs, oldSelection, newSelection) ->
+ {
+ final String[] javaTypes = ObjectEntityUtilities.getRegisteredTypeNames();
+
+ if (oldSelection != null)
+ {
+ javaAttributeNameTextField.textProperty().unbindBidirectional(oldSelection.nameProperty());
+ javaTypeComboBox.valueProperty().unbindBidirectional(oldSelection.javaTypeProperty());
+ optimisticLockingCheckBox.selectedProperty().unbindBidirectional(oldSelection.usedForLockingProperty());
+ }
+
+ javaTypeComboBox.getItems().clear();
+
+ if (newSelection != null)
+ {
+ javaTypeComboBox.getItems().addAll(javaTypes);
+
+ javaAttributeNameTextField.textProperty().bindBidirectional(newSelection.nameProperty());
+ javaTypeComboBox.valueProperty().bindBidirectional(newSelection.javaTypeProperty());
+ optimisticLockingCheckBox.selectedProperty().bindBidirectional(newSelection.usedForLockingProperty());
+ databaseTypeLabel.setText(newSelection.getDatabaseType());
+ }
+
+ javaAttributeNameTextField.setDisable(newSelection == null);
+ javaTypeComboBox.setDisable(newSelection == null);
+ optimisticLockingCheckBox.setDisable(newSelection == null);
+ };
+
+ @Override
+ public void beginEditing()
+ {
+ disable(javaAttributeNameTextField);
+ javaAttributeNameTextField.setText(null);
+
+ disable(javaTypeComboBox);
+ javaTypeComboBox.getItems().clear();
+ javaTypeComboBox.setValue(null);
+
+ disable(optimisticLockingCheckBox);
+ optimisticLockingCheckBox.setSelected(false);
+
+ databaseTypeLabel.setText("N/A");
+
+ relationshipsTableView.setItems(objectEntityAdapter.getAttributes());
+ relationshipsTableView.getSelectionModel().selectedItemProperty().addListener(attributesTableViewSelectionListener);
+
+ // Automatically select the first item, if available.
+ if (relationshipsTableView.getItems().size() > 0)
+ relationshipsTableView.getSelectionModel().select(0);
+ }
+
+ @Override
+ public void endEditing()
+ {
+ final ObjectAttributeAdapter currentObjectAttributeAdapter = relationshipsTableView.getSelectionModel().getSelectedItem();
+
+ if (currentObjectAttributeAdapter != null)
+ {
+ javaAttributeNameTextField.textProperty().unbindBidirectional(currentObjectAttributeAdapter.nameProperty());
+ javaTypeComboBox.valueProperty().unbindBidirectional(currentObjectAttributeAdapter.javaTypeProperty());
+ optimisticLockingCheckBox.selectedProperty().unbindBidirectional(currentObjectAttributeAdapter.usedForLockingProperty());
+ }
+
+ relationshipsTableView.getSelectionModel().selectedItemProperty().removeListener(attributesTableViewSelectionListener);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/04b54a71/src/main/resources/layouts/ObjectEntityAttributesTabLayout.fxml
----------------------------------------------------------------------
diff --git a/src/main/resources/layouts/ObjectEntityAttributesTabLayout.fxml b/src/main/resources/layouts/ObjectEntityAttributesTabLayout.fxml
index 1771a56..efe5df7 100644
--- a/src/main/resources/layouts/ObjectEntityAttributesTabLayout.fxml
+++ b/src/main/resources/layouts/ObjectEntityAttributesTabLayout.fxml
@@ -74,7 +74,7 @@
</HBox>
<TableView fx:id="attributesTableView" VBox.vgrow="ALWAYS">
<placeholder>
- <Label text="No Java attributes have been defined; please add them using the toolbar above." />
+ <Label text="No Object Entity (Java) attributes have been defined; please add them using the toolbar above." />
</placeholder>
<columns>
<TableColumn fx:id="attributeIsInheritedColumn" editable="false" maxWidth="25.0" minWidth="25.0" prefWidth="25.0" resizable="false" sortable="false" text="I" />
http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/04b54a71/src/main/resources/layouts/ObjectEntityLayout.fxml
----------------------------------------------------------------------
diff --git a/src/main/resources/layouts/ObjectEntityLayout.fxml b/src/main/resources/layouts/ObjectEntityLayout.fxml
index a8a5318..5297fba 100644
--- a/src/main/resources/layouts/ObjectEntityLayout.fxml
+++ b/src/main/resources/layouts/ObjectEntityLayout.fxml
@@ -49,7 +49,7 @@
</Tab>
<Tab closable="false" text="Relationships">
<content>
- <AnchorPane minHeight="0.0" prefWidth="200.0">
+ <AnchorPane fx:id="relationshipsTabAnchorPane" minHeight="0.0" prefWidth="200.0">
<children>
<Label alignment="CENTER" text="View is in Separate FXML" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/04b54a71/src/main/resources/layouts/ObjectEntityRelationshipsTabLayout.fxml
----------------------------------------------------------------------
diff --git a/src/main/resources/layouts/ObjectEntityRelationshipsTabLayout.fxml b/src/main/resources/layouts/ObjectEntityRelationshipsTabLayout.fxml
new file mode 100644
index 0000000..bf2500d
--- /dev/null
+++ b/src/main/resources/layouts/ObjectEntityRelationshipsTabLayout.fxml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<?import javafx.geometry.*?>
+<?import javafx.scene.control.*?>
+<?import java.lang.*?>
+<?import javafx.scene.layout.*?>
+
+<fx:root maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="616.0" prefWidth="868.0" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
+ <children>
+ <VBox layoutX="10.0" layoutY="10.0" minHeight="400.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox prefWidth="200.0">
+ <children>
+ <Button fx:id="newRelationshipButton" mnemonicParsing="false" text="New Relationship">
+ <tooltip>
+ <Tooltip text="Create a new Object Attribute." />
+ </tooltip>
+ </Button>
+ <Button fx:id="synchronizeWithDatabaseEntityButton" mnemonicParsing="false" text="Sync">
+ <tooltip>
+ <Tooltip text="Synchronize this Object Entity with the mapped Database Entity." />
+ </tooltip>
+ </Button>
+ <Button fx:id="viewRelatedDatabaseEntityButton" mnemonicParsing="false" text="Jump">
+ <tooltip>
+ <Tooltip text="View related Database Entity." />
+ </tooltip>
+ </Button>
+ <Pane maxWidth="-Infinity" minWidth="-Infinity" prefWidth="16.0" />
+ <Button fx:id="deleteButton" mnemonicParsing="false" text="Delete">
+ <tooltip>
+ <Tooltip text="Delete this Object Attribute." />
+ </tooltip>
+ </Button>
+ <Pane maxWidth="-Infinity" minWidth="-Infinity" prefWidth="16.0" />
+ <Button fx:id="cutButton" mnemonicParsing="false" text="Cut">
+ <tooltip>
+ <Tooltip text="Cut this Object Attribute." />
+ </tooltip>
+ </Button>
+ <Button fx:id="copyButton" mnemonicParsing="false" text="Copy">
+ <tooltip>
+ <Tooltip text="Copy this Object Attribute." />
+ </tooltip>
+ </Button>
+ <Button fx:id="pasteButton" mnemonicParsing="false" text="Paste">
+ <tooltip>
+ <Tooltip text="Paste previously cut or copied Object Attribute." />
+ </tooltip>
+ </Button>
+ </children>
+ <VBox.margin>
+ <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" />
+ </VBox.margin>
+ </HBox>
+ <TableView fx:id="relationshipsTableView" VBox.vgrow="ALWAYS">
+ <placeholder>
+ <Label text="No Object Entity (Java) relationships have been defined; please add them using the toolbar above." />
+ </placeholder>
+ <columns>
+ <TableColumn fx:id="attributeIsInheritedColumn" editable="false" maxWidth="25.0" minWidth="25.0" prefWidth="25.0" resizable="false" sortable="false" text="I" />
+ <TableColumn fx:id="attributeUsedForLockingColumn" editable="false" maxWidth="25.0" minWidth="25.0" prefWidth="25.0" resizable="false" sortable="false" text="L" />
+ <TableColumn fx:id="relationshipNameColumn" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="179.0" text="Relationship Name" />
+ <TableColumn fx:id="relationshipTargetColumn" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="182.0" text="Target" />
+ <TableColumn fx:id="attributeDatabaseTypeColumn" editable="false" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="116.0" text="Semantics" />
+ <TableColumn fx:id="attributeDatabasePathColumn" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="183.0" text="Database Path" />
+ <TableColumn prefWidth="157.0" text="Database Type" />
+ </columns>
+ </TableView>
+ <GridPane vgap="6.0" VBox.vgrow="NEVER">
+ <columnConstraints>
+ <ColumnConstraints fillWidth="false" halignment="RIGHT" hgrow="NEVER" />
+ <ColumnConstraints fillWidth="false" hgrow="NEVER" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="210.0" />
+ <ColumnConstraints fillWidth="false" halignment="RIGHT" />
+ <ColumnConstraints fillWidth="false" hgrow="NEVER" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="210.0" />
+ <ColumnConstraints hgrow="ALWAYS" />
+ </columnConstraints>
+ <rowConstraints>
+ <RowConstraints vgrow="SOMETIMES" />
+ <RowConstraints vgrow="SOMETIMES" />
+ </rowConstraints>
+ <children>
+ <Label text="Relationship Name: " />
+ <Label text="Database Attribute Path: " GridPane.rowIndex="1" />
+ <Label text="Java Type: " GridPane.columnIndex="2" />
+ <Label text="Database Type: " GridPane.columnIndex="2" GridPane.rowIndex="1" />
+ <TextField fx:id="javaAttributeNameTextField" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" />
+ <Label fx:id="databaseTypeLabel" text="type name here" GridPane.columnIndex="3" GridPane.rowIndex="1" />
+ <ComboBox fx:id="javaTypeComboBox" editable="true" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" promptText="Enter or Choose..." GridPane.columnIndex="3" />
+ <CheckBox fx:id="optimisticLockingCheckBox" mnemonicParsing="false" text="Optimistic Locking" GridPane.columnIndex="4" />
+ <ComboBox maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
+ </children>
+ <padding>
+ <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" />
+ </padding>
+ </GridPane>
+ <TabPane maxHeight="200.0" minHeight="120.0" tabClosingPolicy="UNAVAILABLE">
+ <tabs>
+ <Tab text="Getter JavaDoc">
+ <content>
+ <AnchorPane>
+ <children>
+ <TextArea promptText="Omit comment characters. Press return to include newlines in output." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+ </children>
+ </AnchorPane>
+ </content>
+ </Tab>
+ <Tab text="Add-To JavaDoc">
+ <content>
+ <AnchorPane>
+ <children>
+ <TextArea promptText="Omit comment characters. Press return to include newlines in output." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+ </children>
+ </AnchorPane>
+ </content>
+ </Tab>
+ <Tab text="Remove-From JavaDoc">
+ <content>
+ <AnchorPane>
+ <children>
+ <TextArea promptText="Omit comment characters. Press return to include newlines in output." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+ </children>
+ </AnchorPane>
+ </content>
+ </Tab>
+ <Tab text="Attribute Annotations">
+ <content>
+ <AnchorPane>
+ <children>
+ <TextArea layoutX="320.0" layoutY="-63.0" promptText="Add annotations to be included here. Press return to include newlines in output. Be sure to add any required imports under the Class tab." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+ </children>
+ </AnchorPane>
+ </content>
+ </Tab>
+ <Tab text="Getter Annotations">
+ <content>
+ <AnchorPane>
+ <children>
+ <TextArea promptText="Add annotations to be included here. Press return to include newlines in output. Be sure to add any required imports under the Class tab." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+ </children>
+ </AnchorPane>
+ </content>
+ </Tab>
+ <Tab text="Setter Annotations">
+ <content>
+ <AnchorPane>
+ <children>
+ <TextArea promptText="Add annotations to be included here. Press return to include newlines in output. Be sure to add any required imports under the Class tab." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+ </children>
+ </AnchorPane>
+ </content>
+ </Tab>
+ </tabs>
+ <padding>
+ <Insets bottom="8.0" left="8.0" right="8.0" />
+ </padding>
+ </TabPane>
+ </children>
+ </VBox>
+ </children>
+</fx:root>