Commit b2d40f78 authored by Riegel's avatar Riegel
Browse files

Merge branch 'dev_citygml3' into 'dev'

CityGML 3.0. Support

See merge request !10
2 merge requests!11CityDoctor Release Version 3.16.0,!10CityGML 3.0. Support
Pipeline #10321 passed with stage
in 1 minute and 35 seconds
Showing with 583 additions and 39 deletions
+583 -39
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
import javafx.scene.paint.Color;
import java.util.List;
public class AllOtherObjectsNode extends Renderable{
private final List<GenericCityObject> genericObjects;
public AllOtherObjectsNode(List<GenericCityObject> genericObjects) {
this.genericObjects = genericObjects;
}
@Override
public void refreshTextColor() {
boolean wasChecked = false;
for (GenericCityObject gco : genericObjects) {
if (gco.isValidated()) {
wasChecked = true;
if (gco.containsAnyError()) {
setStatus(CheckStatus.ERROR);
return;
}
}
}
if (wasChecked) {
setStatus(CheckStatus.OK);
} else {
setStatus(CheckStatus.NOT_CHECKED);
}
}
@Override
public String getText() {
return "GenericCityObjects";
}
@Override
public void visit(Renderer renderer) {
renderer.clearCurrentRender();
renderer.renderCityObjects(genericObjects, Color.GRAY);
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractRoom;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
import java.util.List;
public class AllRoomsNode extends Renderable{
private final List<? extends AbstractRoom> rooms;
public AllRoomsNode(List<? extends AbstractRoom> rooms) {
this.rooms = rooms;
}
@Override
public String getText() {
return "Building Rooms";
}
@Override
public void visit(Renderer renderer) {
renderer.clearCurrentRender();
}
@Override
public void refreshTextColor() {
boolean wasChecked = false;
for (AbstractRoom ar : rooms) {
if (ar.isValidated()) {
wasChecked = true;
if (ar.containsAnyError()) {
setStatus(CheckStatus.ERROR);
return;
}
}
}
if (wasChecked) {
setStatus(CheckStatus.OK);
} else {
setStatus(CheckStatus.NOT_CHECKED);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.Storey;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
import java.util.List;
public class AllStoreysNode extends Renderable{
private final List<Storey> storeys;
public AllStoreysNode(List<Storey> storeys) {
this.storeys = storeys;
}
@Override
public String getText() {
return "Building Storeys";
}
@Override
public void visit(Renderer renderer) {
renderer.clearCurrentRender();
}
@Override
public void refreshTextColor() {
boolean wasChecked = false;
for (Storey storey : storeys) {
if (storey.isValidated()) {
wasChecked = true;
if (storey.containsAnyError()) {
setStatus(CheckStatus.ERROR);
return;
}
}
}
if (wasChecked) {
setStatus(CheckStatus.OK);
} else {
setStatus(CheckStatus.NOT_CHECKED);
}
}
}
......@@ -25,15 +25,10 @@ import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class AllTinNode extends Renderable {
public AllTinNode(List<TinObject> components) {
// TODO Auto-generated constructor stub
}
public AllTinNode(List<TinObject> components) {}
@Override
public void refreshTextColor() {
// TODO Auto-generated method stub
}
public void refreshTextColor() {}
@Override
public String getText() {
......@@ -41,9 +36,6 @@ public class AllTinNode extends Renderable {
}
@Override
public void visit(Renderer renderer) {
// TODO Auto-generated method stub
}
public void visit(Renderer renderer) {}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.TunnelPart;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
import java.util.List;
public class AllTunnelPartsNode extends Renderable{
private final List<TunnelPart> tunnelParts;
public AllTunnelPartsNode(List<TunnelPart> tunnelParts) {
this.tunnelParts = tunnelParts;
}
@Override
public String getText() {
return "Tunnel Parts";
}
@Override
public void visit(Renderer renderer) {
renderer.clearCurrentRender();
}
@Override
public void refreshTextColor() {
boolean wasChecked = false;
for (TunnelPart tp : tunnelParts) {
if (tp.isValidated()) {
wasChecked = true;
if (tp.containsAnyError()) {
setStatus(CheckStatus.ERROR);
return;
}
}
}
if (wasChecked) {
setStatus(CheckStatus.OK);
} else {
setStatus(CheckStatus.NOT_CHECKED);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.Tunnel;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
import java.util.List;
public class AllTunnelsNode extends Renderable{
private final List<Tunnel> tunnels;
public AllTunnelsNode(List<Tunnel> tunnels) {
this.tunnels = tunnels;
}
@Override
public void refreshTextColor() {
// no color changes
}
@Override
public String getText() {
return "Tunnels";
}
@Override
public void visit(Renderer renderer) {
renderer.renderTunnels(tunnels);
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class BuildingUnitNode extends Renderable{
private final BuildingUnit buildingUnit;
public BuildingUnitNode(BuildingUnit buildingUnit) {
this.buildingUnit = buildingUnit;
}
@Override
public String getText() {
return buildingUnit.getGmlId().getGmlString();
}
@Override
public void visit(Renderer renderer) {
renderer.render(buildingUnit);
}
@Override
public void refreshTextColor() {
if (!buildingUnit.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (buildingUnit.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractRoom;
import de.hft.stuttgart.citydoctor2.datastructure.CityFurniture;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class CityFurnitureNode extends Renderable{
private final CityFurniture cityFurniture;
public CityFurnitureNode(CityFurniture cityFurniture) {
this.cityFurniture = cityFurniture;
}
@Override
public String getText() {
return cityFurniture.getGmlId().getGmlString();
}
@Override
public void visit(Renderer renderer) {
renderer.render(cityFurniture);
}
@Override
public void refreshTextColor() {
if (!cityFurniture.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (cityFurniture.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractFurniture;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class FurnitureNode extends Renderable{
private final AbstractFurniture furniture;
public FurnitureNode(AbstractFurniture furniture) {
this.furniture = furniture;
}
@Override
public String getText() {
return furniture.getGmlId().getGmlString();
}
@Override
public void visit(Renderer renderer) {
renderer.render(furniture);
}
@Override
public void refreshTextColor() {
if (!furniture.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (furniture.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.GenericAttribute;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class GenericAttributeNode extends Renderable {
private final GenericAttribute gen;
public GenericAttributeNode(GenericAttribute gen) {
this.gen = gen;
}
@Override
public void refreshTextColor() {
}
@Override
public String getText() {
return gen.toString();
}
@Override
public void visit(Renderer renderer) {
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class GenericCityObjectsNode extends Renderable{
private final GenericCityObject gcobject;
public GenericCityObjectsNode(GenericCityObject gcobject) {
this.gcobject = gcobject;
}
@Override
public String getText() {
return gcobject.getGmlId().getGmlString();
}
@Override
public void visit(Renderer renderer) {
renderer.render(gcobject);
}
@Override
public void refreshTextColor() {
if (!gcobject.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (gcobject.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.ImplicitGeometryHolder;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
......@@ -12,6 +13,9 @@ public class GeometryNode extends Renderable {
public GeometryNode(Geometry geom) {
this.geom = geom;
StringBuilder sb = new StringBuilder();
if (geom instanceof ImplicitGeometryHolder) {
sb.append("Implicit");
}
sb.append("Geometry [");
sb.append(geom.getType());
sb.append(", ");
......
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractRoom;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class RoomNode extends Renderable{
private final AbstractRoom room;
public RoomNode(AbstractRoom room) {
this.room = room;
}
@Override
public String getText() {
return room.getGmlId().getGmlString();
}
@Override
public void visit(Renderer renderer) {
renderer.render(room);
}
@Override
public void refreshTextColor() {
if (!room.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (room.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.Storey;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class StoreyNode extends Renderable{
private final Storey storey;
public StoreyNode(Storey storey) {
this.storey = storey;
}
@Override
public String getText() {
return storey.getGmlId().getGmlString();
}
@Override
public void visit(Renderer renderer) {
renderer.render(storey);
}
@Override
public void refreshTextColor() {
if (!storey.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (storey.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.Tunnel;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class TunnelNode extends Renderable{
private final Tunnel tunnel;
public TunnelNode(Tunnel tunnel) {
this.tunnel = tunnel;
}
@Override
public String getText() {
return tunnel.getGmlId().getGmlString();
}
public Tunnel getTunnel() {
return tunnel;
}
@Override
public void visit(Renderer renderer) {
renderer.render(tunnel);
}
@Override
public void refreshTextColor() {
if (!tunnel.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (tunnel.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
package de.hft.stuttgart.citydoctor2.gui.tree;
import de.hft.stuttgart.citydoctor2.datastructure.TunnelPart;
import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
import de.hft.stuttgart.citydoctor2.gui.Renderer;
public class TunnelPartNode extends Renderable{
private final TunnelPart tp;
public TunnelPartNode(TunnelPart tp) {
this.tp = tp;
}
@Override
public String getText() {
return tp.getGmlId().getGmlString();
}
@Override
public void visit(Renderer renderer) {
renderer.render(tp);
}
@Override
public void refreshTextColor() {
if (!tp.isValidated()) {
setStatus(CheckStatus.NOT_CHECKED);
} else if (tp.containsAnyError()) {
setStatus(CheckStatus.ERROR);
} else {
setStatus(CheckStatus.OK);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.ToggleButton?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.HBox?>
<HBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" spacing="5.0" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml">
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<HBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" spacing="5.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1">
<children>
<HBox spacing="5.0" HBox.hgrow="NEVER">
<children>
......@@ -31,11 +28,16 @@
<ImageView fx:id="gridImageView" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
</graphic>
</ToggleButton>
<ToggleButton fx:id="cullingButton" disable="true" mnemonicParsing="false" selected="true">
<ToggleButton fx:id="cullingButton" disable="true" mnemonicParsing="false">
<graphic>
<ImageView fx:id="cullingImageView" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
</graphic>
</ToggleButton>
<ToggleButton fx:id="hideRoofBtn" disable="true" layoutX="222.0" layoutY="10.0" mnemonicParsing="false" selected="true">
<graphic>
<ImageView fx:id="hideRoofView" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
</graphic>
</ToggleButton>
<Separator orientation="VERTICAL" />
<Button id="loadBtn" fx:id="showWorldBtn" disable="true" mnemonicParsing="false">
<graphic>
......@@ -63,6 +65,12 @@
<ImageView fx:id="lod4View" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
</graphic>
</ToggleButton>
<Separator orientation="VERTICAL" />
<Button fx:id="resetCameraBtn" mnemonicParsing="false">
<graphic>
<ImageView fx:id="resetCameraView" disable="true" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
</graphic>
</Button>
</children>
</HBox>
<HBox fx:id="spacer" alignment="TOP_RIGHT" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" spacing="5.0" HBox.hgrow="ALWAYS">
......
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.ProgressBar?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.TreeView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?>
<BorderPane fx:id="mainPane" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="400.0" minWidth="400.0" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml">
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<BorderPane fx:id="mainPane" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="400.0" minWidth="400.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1">
<center>
<SplitPane fx:id="mainContainer" dividerPositions="0.47069431920649235" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minWidth="300.0" prefHeight="600.0" prefWidth="1100.0">
<items>
......@@ -73,6 +57,11 @@
<TreeView id="transTree" fx:id="transView" prefHeight="200.0" prefWidth="200.0" showRoot="false" />
</content>
</Tab>
<Tab fx:id="tunnelTab" text="Tunnel">
<content>
<TreeView id="tunnelTree" fx:id="tunnelView" prefHeight="200.0" prefWidth="200.0" showRoot="false" />
</content>
</Tab>
<Tab fx:id="bridgeTab" text="Bridges">
<content>
<TreeView id="bridgesTree" fx:id="bridgeView" prefHeight="200.0" prefWidth="200.0" showRoot="false" />
......@@ -88,6 +77,16 @@
<TreeView id="terrainTree" fx:id="terrainView" prefHeight="200.0" prefWidth="200.0" showRoot="false" />
</content>
</Tab>
<Tab fx:id="cityFurnitureTab" text="CityFurniture">
<content>
<TreeView id="cityFurnitureTree" fx:id="cityFurnitureView" prefHeight="200.0" prefWidth="200.0" showRoot="false" />
</content>
</Tab>
<Tab fx:id="otherObjectsTab" text="Other">
<content>
<TreeView id="otherTree" fx:id="otherObjectsView" prefHeight="200.0" prefWidth="200.0" showRoot="false" />
</content>
</Tab>
</tabs>
</TabPane>
</children>
......@@ -114,6 +113,11 @@
<TreeView fx:id="vertexView" prefHeight="200.0" prefWidth="200.0" showRoot="false" />
</content>
</Tab>
<Tab fx:id="attributeTab" text="Attributes">
<content>
<TreeView fx:id="attributeView" prefHeight="200.0" prefWidth="200.0" showRoot="false"/>
</content>
</Tab>
</tabs>
</TabPane>
</items>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment