Commit 0d2c5389 authored by Christian Hoesel's avatar Christian Hoesel 🎺

Feature/weitere attribute in darstellung speichern

parent e670bb9b
eclipse.preferences.version=1
encoding/<project>=UTF-8
......@@ -7,6 +7,10 @@
<author email="info@bitctrl.de">BitCtrl Systems GmbH</author>
</properties>
<body>
<release version="4.0.3" date="30.10.2018">
<action type="update">
Stöfallzustand und Anzeigeverfahren werden jetzt in jeder Darstellung einzeln gespeichert</action>
</release>
<release version="4.0.2" date="21.03.2017">
<action type="fix">
Schwarze Schrift auf schwarzem Grund in Tooltips korrigert.</action>
......
......@@ -2,7 +2,7 @@
<feature
id="de.bsvrz.buv.plugin.netz.feature"
label="%featureName"
version="4.0.2.qualifier"
version="4.0.3.qualifier"
provider-name="%featureProvider"
plugin="de.bsvrz.buv.plugin.netz">
......
......@@ -6,14 +6,14 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-SymbolicName: de.bsvrz.buv.plugin.netz;singleton:=true
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-Version: 4.0.2.qualifier
Bundle-Version: 4.0.3.qualifier
Bundle-ClassPath: .
Require-Bundle: de.bsvrz.buv.rw.basislib;bundle-version="[3.0.0,4.0.0)",
org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport,
com.bitctrl.lib.eclipse.emf.dav;visibility:=reexport,
com.bitctrl.lib.eclipse.emf.davbitctrl;visibility:=reexport,
de.bsvrz.buv.plugin.dobj;bundle-version="[3.0.0,4.0.0)";visibility:=reexport,
de.bsvrz.buv.plugin.dobj;bundle-version="[3.1.2,4.0.0)";visibility:=reexport,
com.bitctrl.lib.eclipse.emf;visibility:=reexport,
com.bitctrl.lib.eclipse.emf.gef;visibility:=reexport,
org.eclipse.emf.edit;visibility:=reexport,
......
......@@ -395,5 +395,16 @@
name="Störfallverfahren">
</command>
</extension>
<extension
point="org.eclipse.ui.commandImages">
<image
commandId="de.bsvrz.buv.plugin.netz.actions.AnzeigeVerfahrenAction"
icon="icons/anzeigeverfahren.gif">
</image>
<image
commandId="de.bsvrz.buv.plugin.netz.actions.StoerfallVerfahrenAction"
icon="icons/stoerfallverfahren.gif">
</image>
</extension>
</plugin>
/*
* Rahmenwerk-Plug-in "Maßstäbliche Darstellung"
* Copyright (C) 2018 BitCtrl Systems GmbH
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact Information:
* BitCtrl Systems GmbH
* Weissenfelser Strasse 67
* 04229 Leipzig
* Phone: +49 341-490670
* mailto: info@bitctrl.de
*/
package de.bsvrz.buv.plugin.netz.stoerfall;
final class StoerfallConstants {
static final String VIEWER_PROPERTY_ASPECT_STOERFALL_VERFAHREN = "stoerfallVerfahren.aspect";
static final String DEFAULT_ASP_STOERFALL_VERFAHREN = "asp.störfallVerfahrenMARZ";
static final String ATG_STOERFALL_ZUSTAND = "atg.störfallZustand";
private StoerfallConstants() {
// utility class
}
}
......@@ -25,8 +25,8 @@
*/
package de.bsvrz.buv.plugin.netz.stoerfall;
import static de.bsvrz.buv.plugin.netz.stoerfall.StoerfallConstants.DEFAULT_ASP_STOERFALL_VERFAHREN;
import static de.bsvrz.buv.plugin.netz.stoerfall.StoerfallConstants.VIEWER_PROPERTY_ASPECT_STOERFALL_VERFAHREN;
import static de.bsvrz.buv.plugin.dobj.util.StoerfallConstants.DEFAULT_ASP_STOERFALL_VERFAHREN;
import static de.bsvrz.buv.plugin.dobj.util.StoerfallConstants.VIEWER_PROPERTY_ASPECT_STOERFALL_VERFAHREN;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
......
......@@ -25,7 +25,7 @@
*/
package de.bsvrz.buv.plugin.netz.stoerfall;
import static de.bsvrz.buv.plugin.netz.stoerfall.StoerfallConstants.ATG_STOERFALL_ZUSTAND;
import static de.bsvrz.buv.plugin.dobj.util.StoerfallConstants.ATG_STOERFALL_ZUSTAND;
import org.eclipse.ui.PlatformUI;
......
......@@ -25,25 +25,27 @@
*/
package de.bsvrz.buv.plugin.netz.stoerfall;
import static de.bsvrz.buv.plugin.netz.stoerfall.StoerfallConstants.ATG_STOERFALL_ZUSTAND;
import static de.bsvrz.buv.plugin.netz.stoerfall.StoerfallConstants.DEFAULT_ASP_STOERFALL_VERFAHREN;
import static de.bsvrz.buv.plugin.netz.stoerfall.StoerfallConstants.VIEWER_PROPERTY_ASPECT_STOERFALL_VERFAHREN;
import static de.bsvrz.buv.plugin.dobj.util.StoerfallConstants.ATG_STOERFALL_ZUSTAND;
import static de.bsvrz.buv.plugin.dobj.util.StoerfallConstants.DEFAULT_ASP_STOERFALL_VERFAHREN;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import org.eclipse.core.runtime.Assert;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPart;
import com.bitctrl.lib.eclipse.dialogs.ChoiceDialog;
import com.bitctrl.lib.eclipse.emf.gef.commands.SetCommand;
import de.bsvrz.buv.plugin.darstellung.model.Darstellung;
import de.bsvrz.buv.plugin.darstellung.model.DarstellungPackage;
import de.bsvrz.buv.plugin.netz.internal.RahmenwerkService;
import de.bsvrz.dav.daf.main.ClientDavInterface;
import de.bsvrz.dav.daf.main.config.Aspect;
......@@ -94,34 +96,39 @@ public final class StoerfallVerfahrenAction extends Action {
final AttributeGroup atg = model
.getAttributeGroup(ATG_STOERFALL_ZUSTAND);
final List<Aspect> aspects = new ArrayList<>(atg.getAspects());
Collections.sort(aspects, new Comparator<Aspect>() {
@Override
public int compare(final Aspect asp1, final Aspect asp2) {
return asp1.toString().compareTo(asp2.toString());
}
});
Collections.sort(aspects,
(asp1, asp2) -> asp1.toString().compareTo(asp2.toString()));
return aspects;
}
private Aspect getCurrentAspect() {
Aspect asp = (Aspect) getViewer()
.getProperty(VIEWER_PROPERTY_ASPECT_STOERFALL_VERFAHREN);
if (asp == null) {
asp = getDataModel().getAspect(DEFAULT_ASP_STOERFALL_VERFAHREN);
final Darstellung darstellung = part.getAdapter(Darstellung.class);
final String stoerfallverfahren = darstellung.getStoerfallverfahren();
Aspect result = null;
if (stoerfallverfahren != null) {
result = getDataModel().getAspect(stoerfallverfahren);
}
Assert.isNotNull(asp);
return asp;
}
private void setCurrentAspect(final Aspect asp) {
getViewer().setProperty(VIEWER_PROPERTY_ASPECT_STOERFALL_VERFAHREN,
asp);
if (result == null) {
result = getDataModel().getAspect(DEFAULT_ASP_STOERFALL_VERFAHREN);
}
Assert.isNotNull(result);
return result;
}
private GraphicalViewer getViewer() {
return part.getAdapter(GraphicalViewer.class);
private void setCurrentAspect(final Aspect asp) {
final Darstellung darstellung = part.getAdapter(Darstellung.class);
if (!Objects.equals(darstellung.getStoerfallverfahren(),
asp.getPid())) {
final CommandStack commandStack = part
.getAdapter(CommandStack.class);
final SetCommand cmd = new SetCommand(darstellung,
DarstellungPackage.Literals.DARSTELLUNG__STOERFALLVERFAHREN,
asp.getPid());
commandStack.execute(cmd);
}
}
private DataModel getDataModel() {
......
/*
* Rahmenwerk-Plug-in "Maßstäbliche Darstellung"
* Copyright (C) 2018 BitCtrl Systems GmbH
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact Information:
* BitCtrl Systems GmbH
* Weissenfelser Strasse 67
* 04229 Leipzig
* Phone: +49 341-490670
* mailto: info@bitctrl.de
*/
package de.bsvrz.buv.plugin.netz.stoerfall.anzeigeverfahren;
/**
* Auflistung der Anzeigeverfahren für den Verkehrszustand (Störfallzustand) für
* Messquerschnitte.
*
* @author BitCtrl Systems GmbH, Falko Schumann
*
*/
public enum AnzeigeVerfahren {
/** Verfahren I. */
Verfahren1("Verfahren I"),
/** Verfahren II. */
Verfahren2("Verfahren II"),
/** Verfahren III. */
Verfahren3("Verfahren III");
private String text;
private AnzeigeVerfahren(final String text) {
this.text = text;
}
@Override
public String toString() {
return text;
}
}
......@@ -27,9 +27,7 @@ package de.bsvrz.buv.plugin.netz.stoerfall.anzeigeverfahren;
import java.util.SortedSet;
import com.bitctrl.lib.eclipse.log.PluginLogger;
import de.bsvrz.buv.plugin.netz.internal.NetzPlugin;
import de.bsvrz.buv.plugin.darstellung.model.AnzeigeVerfahren;
import de.bsvrz.buv.plugin.netz.internal.RahmenwerkService;
import de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon;
import de.bsvrz.sys.funclib.bitctrl.modell.SystemObjekt;
......@@ -63,14 +61,12 @@ public final class AnzeigeVerfahren1PolygonProvider
@Override
public String toString() {
return AnzeigeVerfahren.Verfahren1.toString();
return AnzeigeVerfahren.VERFAHREN_I.getLiteral();
}
private class AnzeigeVerfahren1Initializer
extends AnzeigeVerfahrenInitializer {
private final PluginLogger logger = NetzPlugin.getDefault().getLogger();
@Override
protected void initialize() {
for (final SystemObjekt mqs : RahmenwerkService.getService()
......@@ -152,204 +148,6 @@ public final class AnzeigeVerfahren1PolygonProvider
}
}
// /**
// * Debug: Start.
// */
// if (punkte != null) {
// boolean firstPoint = true;
// double x1 = 0;
// double y1 = 0;
// int i = 0;
// for (int a = 0; a < punkte.getKoordinaten().size(); a++) {
// final WGS84Punkt p = punkte.getKoordinaten().get(a);
// i++;
// if (firstPoint) {
// x1 = p.getLaenge();
// y1 = p.getBreite();
// firstPoint = false;
// } else {
// final double x2 = p.getLaenge();
// final double y2 = p.getBreite();
//
// final double len = Math.sqrt((x2 - x1) * (x2 - x1)
// + (y2 - y1) * (y2 - y1));
//
// if (Double.isNaN(len)) {
// final String s = "UMR!!!!!NaN!!!!!: " + len
// + ", MQ: " + mq;
// logger.error(s);
// } else if (len > 0.013) {
// final DecimalFormat decFormat = new DecimalFormat(
// "###.########");
// final StringBuilder xy = new StringBuilder();
// int j = 0;
// try {
// for (int h = 0; h < punkte.getKoordinaten()
// .size(); h++) {
// final WGS84Punkt p2 = punkte
// .getKoordinaten().get(h);
// j++;
// xy.append(" (");
// xy.append(decFormat.format(p2
// .getLaenge()));
// xy.append(", ");
// xy.append(decFormat.format(p2
// .getBreite()));
// xy.append(") ");
// xy.append(a == j ? ("* " + decFormat
// .format(len)) : "");
// xy.append('\n');
// }
//
// final WGS84Polygon ppp = RahmenwerkService
// .getService()
// .getCacheService()
// .getAnzeigeVerfahrenCache()
// .getSegmentToPolygon()
// .get(RahmenwerkService.getService()
// .getCacheService()
// .getAnzeigeVerfahrenCache()
// .getMqToSegment().get(mq));
//
// final List<Point> wgs84Points = new ArrayList<Point>();
// xy.append("\n---\n");
// for (int u = 0; u < wgs84Points.size(); u++) {
// xy.append(" (");
// xy.append(decFormat.format(ppp
// .getKoordinaten().get(u)
// .getLaenge()));
// xy.append(", ");
// xy.append(decFormat.format(ppp
// .getKoordinaten().get(u)
// .getBreite()));
// xy.append(")\n");
// }
//
// } catch (final RuntimeException ex) {
// ex.printStackTrace();
// }
//
// xy.append(" Segment: ");
// xy.append(segment);
// xy.append(", offset: ");
// xy.append(offset);
// if (segment != null && offset != null) {
// xy.append("1\n");
// final SortedSet<MqaMitPosition> mqList = RahmenwerkService
// .getService().getCacheService()
// .getAnzeigeVerfahrenCache()
// .getSegmentToMqList().get(segment);
// if (mqList != null) {
// xy.append("2\n");
// i = 0;
// int found = -1;
// final MqaMitPosition[] mqArray = mqList
// .toArray(new MqaMitPosition[mqList
// .size()]);
// for (final MqaMitPosition elem : mqList) {
// if (elem.offset == offset) {
// found = i;
// break;
// }
// i++;
// }
// xy.append("3: ");
// xy.append(i);
// xy.append('\n');
// if (found > -1) {
// xy.append("4\n");
// if (found == 0) {
// xy.append("5\n");
// /**
// * An erster Stelle gefunden:
// */
// if (mqList.size() == 1) {
// xy.append("6 ");
// xy.append(mqArray[0].offset);
// xy.append(", -1\n");
// /**
// * Von MQ bis zum
// * Segmentende.
// */
// punkte = WGS84Util
// .ausschneiden(
// segment,
// mqArray[0].offset,
// -1.0);
//
// } else {
// xy.append("7 ");
// xy.append(mqArray[0].offset);
// xy.append(", ");
// xy.append(mqArray[1].offset);
// xy.append('\n');
// /**
// * von Segmentanfang bis
// * Offset von zweitem MQ
// */
// punkte = WGS84Util
// .ausschneiden(
// segment,
// mqArray[0].offset,
// mqArray[1].offset);
// }
// } else if (found == mqList.size() - 1) {
// xy.append("8 ");
// xy.append(mqArray[mqList.size() - 1].offset);
// xy.append(", -1\n");
// /**
// * An letzter Stelle gefunden
// * und MQ-Liste wenigstens zwei
// * Elemente gross:
// */
// punkte = WGS84Util
// .ausschneiden(
// segment,
// mqArray[mqList
// .size() - 1].offset,
// -1.0);
// /**
// * Von Offset des vorletzten MQ
// * bis Segmentende.
// */
// } else {
// xy.append("9 ");
// xy.append(mqArray[found].offset);
// xy.append(", ");
// xy.append(mqArray[found + 1].offset);
// xy.append('\n');
// /**
// * Sonst
// */
// punkte = WGS84Util
// .ausschneiden(
// segment,
// mqArray[found].offset,
// mqArray[found + 1].offset);
// /**
// * Von Offset des Vorgaenger-MQ
// * bis Offset des Nachfolger-MQ
// */
// }
//
// }
// }
// }
// final String s = "!!!!!ZACKE!!!!!: " + len
// + ", MQ: " + mq + "\nKoordinaten:\n"
// + xy.toString();
// logger.error(s);
// }
// x1 = x2;
// y1 = y2;
// }
// }
//
// /**
// * Debug: End.
// */
// }
getMqToPolygon().put(mq, punkte);
}
fireAnzeigeVerfahrenInitialisiertAndRemoveAllListeners();
......
......@@ -28,6 +28,7 @@ package de.bsvrz.buv.plugin.netz.stoerfall.anzeigeverfahren;
import java.util.List;
import java.util.SortedSet;
import de.bsvrz.buv.plugin.darstellung.model.AnzeigeVerfahren;
import de.bsvrz.buv.plugin.netz.internal.RahmenwerkService;
import de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon;
import de.bsvrz.sys.funclib.bitctrl.modell.ObjektFactory;
......@@ -63,7 +64,7 @@ public final class AnzeigeVerfahren2PolygonProvider
@Override
public String toString() {
return AnzeigeVerfahren.Verfahren2.toString();
return AnzeigeVerfahren.VERFAHREN_II.getLiteral();
}
private class AnzeigeVerfahren2Initializer
......@@ -117,14 +118,8 @@ public final class AnzeigeVerfahren2PolygonProvider
mqArray[found - 1].offset,
mqArray[found].offset);
}
} else {
System.out.println("1:" + mq);
}
} else {
System.out.println("2:" + mq);
}
} else {
System.out.println("3:" + mq);
}
getMqToPolygon().put(mq, punkte);
......
......@@ -27,6 +27,7 @@ package de.bsvrz.buv.plugin.netz.stoerfall.anzeigeverfahren;
import java.util.SortedSet;
import de.bsvrz.buv.plugin.darstellung.model.AnzeigeVerfahren;
import de.bsvrz.buv.plugin.netz.internal.RahmenwerkService;
import de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon;
import de.bsvrz.sys.funclib.bitctrl.modell.SystemObjekt;
......@@ -60,7 +61,7 @@ public final class AnzeigeVerfahren3PolygonProvider
@Override
public String toString() {
return AnzeigeVerfahren.Verfahren3.toString();
return AnzeigeVerfahren.VERFAHREN_III.getLiteral();
}
private class AnzeigeVerfahren3Initializer
......@@ -142,14 +143,8 @@ public final class AnzeigeVerfahren3PolygonProvider
+ mqArray[found + 1].offset)
/ 2.0);
}
} else {
System.out.println("1:" + mq);
}
} else {
System.out.println("2:" + mq);
}
} else {
System.out.println("3:" + mq);
}
getMqToPolygon().put(mq, punkte);
......
......@@ -25,13 +25,12 @@
*/
package de.bsvrz.buv.plugin.netz.stoerfall.anzeigeverfahren;
import static de.bsvrz.buv.plugin.netz.stoerfall.anzeigeverfahren.AnzeigeVerfahrenConstants.DEFAULT_ANZEIGE_VERFAHREN;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import org.eclipse.core.runtime.Assert;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.window.Window;
......@@ -47,6 +46,11 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.dialogs.SelectionDialog;
import com.bitctrl.lib.eclipse.emf.gef.commands.SetCommand;
import de.bsvrz.buv.plugin.darstellung.model.AnzeigeVerfahren;
import de.bsvrz.buv.plugin.darstellung.model.Darstellung;
import de.bsvrz.buv.plugin.darstellung.model.DarstellungPackage;
import de.bsvrz.buv.plugin.netz.internal.NetzPlugin;
/**
......@@ -89,10 +93,11 @@ public final class AnzeigeVerfahrenAction extends Action {
}
private AnzeigeVerfahren getCurrentAnzeigeVerfahren() {
AnzeigeVerfahren anzeigeVerfahren = (AnzeigeVerfahren) getViewer()
.getProperty(AnzeigeVerfahren.class.toString());
final Darstellung darstellung = part.getAdapter(Darstellung.class);
AnzeigeVerfahren anzeigeVerfahren = darstellung.getAnzeigeVerfahren();
if (anzeigeVerfahren == null) {
anzeigeVerfahren = DEFAULT_ANZEIGE_VERFAHREN;
anzeigeVerfahren = AnzeigeVerfahren.VERFAHREN_I;
}
Assert.isNotNull(anzeigeVerfahren);
return anzeigeVerfahren;
......@@ -100,12 +105,17 @@ public final class AnzeigeVerfahrenAction extends Action {
private void setCurrentAnzeigeVerfahren(
final AnzeigeVerfahren anzeigeVerfahren) {
getViewer().setProperty(AnzeigeVerfahren.class.toString(),
anzeigeVerfahren);
}
private GraphicalViewer getViewer() {
return part.getAdapter(GraphicalViewer.class);
final Darstellung darstellung = part.getAdapter(Darstellung.class);
if (!Objects.equals(darstellung.getAnzeigeVerfahren(),
anzeigeVerfahren)) {
final CommandStack commandStack = part
.getAdapter(CommandStack.class);
final SetCommand cmd = new SetCommand(darstellung,
DarstellungPackage.Literals.DARSTELLUNG__ANZEIGE_VERFAHREN,
anzeigeVerfahren);
commandStack.execute(cmd);
}
}
private static final class AuswahlDialog extends SelectionDialog {
......
/*
* Rahmenwerk-Plug-in "Maßstäbliche Darstellung"
* Copyright (C) 2018 BitCtrl Systems GmbH
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact Information:
* BitCtrl Systems GmbH
* Weissenfelser Strasse 67
* 04229 Leipzig
* Phone: +49 341-490670
* mailto: info@bitctrl.de
*/
package de.bsvrz.buv.plugin.netz.stoerfall.anzeigeverfahren;
final class AnzeigeVerfahrenConstants {
static final AnzeigeVerfahren DEFAULT_ANZEIGE_VERFAHREN = AnzeigeVerfahren.Verfahren1;