[Schmitzm-commits] r201 - in trunk/src/schmitzm: geotools/feature geotools/gui swing swing/resource/locales
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Tue Jul 7 20:27:39 CEST 2009
Author: mojays
Date: 2009-07-07 20:27:36 +0200 (Tue, 07 Jul 2009)
New Revision: 201
Modified:
trunk/src/schmitzm/geotools/feature/FeatureUtil.java
trunk/src/schmitzm/geotools/gui/FeatureCollectionFilterPanel.java
trunk/src/schmitzm/geotools/gui/FeatureTablePane.java
trunk/src/schmitzm/swing/OperationTreePanel.java
trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties
Log:
FeatureUtil.featuresToArray(.): immer naives Kopieren, da GT-Bugs, wenn Filter gesetzt ist
FeatureCollectionFilterPanel: BugFix; Vorschau-Layer darf nur f?\195?\188r nicht-leere FeatureCollections erzeugt werden, da sonst Exception in StreamingRenderer
OperationTreePanel: Breite f?\195?\188r Operatoren-Auswahl 150; Tooltip beinhaltet daf?\195?\188r auch Operator.
Deutsche ?\195?\156bersetzungen f?\195?\188r OperationTree-Operatoren
Modified: trunk/src/schmitzm/geotools/feature/FeatureUtil.java
===================================================================
--- trunk/src/schmitzm/geotools/feature/FeatureUtil.java 2009-07-07 17:07:06 UTC (rev 200)
+++ trunk/src/schmitzm/geotools/feature/FeatureUtil.java 2009-07-07 18:27:36 UTC (rev 201)
@@ -333,35 +333,32 @@
/**
* Erzeugt einen Array von {@link Feature Features} auf einer
- * {@link FeatureCollection}. Teilweise liefert
- * {@code FeatureCollection.toArray(new Feature[.])} statt einem {@code Feature}-Array
- * einfach {@code null}. In diesem Fall wird der Array "naiv" ueber Durchlaufen
- * eines {@link FeatureIterator } erzeugt.
- *
- * @param fc
- * eine Feature Collection
+ * {@link FeatureCollection}.<br>
+ * Aufgrund von Problemen bei der Verwendung von Filtern ({@code .size()} liefert
+ * nicht die Anzahl der gefilterten Features; {@code .toArray} liefert
+ * manchmal {@code null}), wird der Array "naiv" ueber Durchlaufen
+ * eines {@link FeatureIterator} kopiert.
+ * @param fc eine Feature Collection
* @return einen leeren Array, wenn die Collection leer oder {@code null} ist
*/
public static Feature[] featuresToArray(FeatureCollection fc) {
- if ( fc == null )
- return new Feature[0];
- Feature[] featureArray = (Feature[])fc.toArray(new Feature[0]);
- if ( featureArray != null )
- return featureArray;
- // Sonst "naiv" kopieren
- featureArray = new Feature[fc.size()];
- FeatureIterator fi = fc.features();
- for (int i=0; fi.hasNext(); i++)
- featureArray[i] = fi.next();
- return featureArray;
+// if ( fc == null || fc.size() == 0 ) // bei leerer FC klappt .toArray nicht!!
+// return new Feature[0];
+// Feature[] featureArray = (Feature[])fc.toArray(new Feature[0]);
+// if ( featureArray != null )
+// return featureArray;
+// // Sonst "naiv" kopieren
+// featureArray = new Feature[fc.size()];
+// FeatureIterator fi = fc.features();
+// for (int i=0; fi.hasNext(); i++)
+// featureArray[i] = fi.next();
+// return featureArray;
+ return featuresToArray(fc,true);
}
/**
* Erzeugt einen Array von {@link Feature Features} auf einer
- * {@link FeatureCollection}. Teilweise liefert
- * {@code FeatureCollection.toArray(new Feature[.])} statt einem {@code Feature}-Array
- * einfach {@code null}. In diesem Fall wird der Array "naiv" ueber Durchlaufen
- * eines {@link FeatureIterator} erzeugt.
+ * {@link FeatureCollection}.
* @param fc
* eine Feature Collection
* @param
@@ -371,15 +368,17 @@
* @return einen leeren Array, wenn die Collection leer oder {@code null} ist
*/
public static Feature[] featuresToArray(FeatureCollection fc, boolean includeNullFeatures) {
- if ( includeNullFeatures )
- return featuresToArray(fc);
-
+// if ( includeNullFeatures )
+// return featuresToArray(fc);
+ if ( fc == null )
+ return new Feature[0];
+
// Naiv alle Features durchgehen.
Vector<Feature> fv = new Vector<Feature>();
FeatureIterator fi = fc.features();
for (int i=0; fi.hasNext(); i++) {
Feature f = fi.next();
- if ( f != null )
+ if ( includeNullFeatures || f != null )
fv.add(f);
}
return fv.toArray(new Feature[0]);
Modified: trunk/src/schmitzm/geotools/gui/FeatureCollectionFilterPanel.java
===================================================================
--- trunk/src/schmitzm/geotools/gui/FeatureCollectionFilterPanel.java 2009-07-07 17:07:06 UTC (rev 200)
+++ trunk/src/schmitzm/geotools/gui/FeatureCollectionFilterPanel.java 2009-07-07 18:27:36 UTC (rev 201)
@@ -352,15 +352,18 @@
* Der Inhalt der Tabelle soll in rot darüber gezeichnet
* werden. Dieses layer wird jedes mal neu erstellt.
*/
- if (getPreviewPanel().mapPane.getContext()
- .getLayerCount() > 1)
- getPreviewPanel().mapPane.getContext().removeLayer(
- 1);
+ if (getPreviewPanel().mapPane.getContext().getLayerCount() > 1)
+ getPreviewPanel().mapPane.getContext().removeLayer(1);
- getPreviewPanel().mapPane.getContext().addLayer(
- new DefaultMapLayer(specialFeatureCollection, StylingUtil
- .createStyleSimple(specialFeatureCollection, Color.red,
- Color.white)));
+ // nur neues Layer erzeugen, wenn FeatureCollection
+ // NICHT leer (sonst Exception im StreamingRenderer!)
+ if ( specialFeatureCollection.size() > 0 )
+ getPreviewPanel().mapPane.getContext().addLayer(
+ new DefaultMapLayer(
+ specialFeatureCollection,
+ StylingUtil.createStyleSimple(specialFeatureCollection, Color.red, Color.white)
+ )
+ );
}
}
});
Modified: trunk/src/schmitzm/geotools/gui/FeatureTablePane.java
===================================================================
--- trunk/src/schmitzm/geotools/gui/FeatureTablePane.java 2009-07-07 17:07:06 UTC (rev 200)
+++ trunk/src/schmitzm/geotools/gui/FeatureTablePane.java 2009-07-07 18:27:36 UTC (rev 201)
@@ -376,7 +376,7 @@
final FeatureCollection allFeatures = getFeatureCollection();
/**
- * Add ALL features to the JMapPane as the base laye and style them
+ * Add ALL features to the JMapPane as the base layer and style them
* in grey
*/
if (allFeatures != null && mapPane != null) {
@@ -388,13 +388,13 @@
}
}
- // Das zweite Layer entfernen (wenne er schon vorhanden ist)
+ // Das zweite Layer entfernen (wenn es schon vorhanden ist)
if (mapPane.getContext().getLayerCount() > 1)
mapPane.getContext().removeLayer(1);
// Und ggf. neu hinzufügen
- if (selectedFeatures != null && selectedFeatures.size() > 0
- && selectedFeatures.getSchema().getDefaultGeometry() != null) {
+ if (selectedFeatures != null && selectedFeatures.size() > 0 &&
+ selectedFeatures.getSchema().getDefaultGeometry() != null) {
if (getFeatureStyle() == null) {
setFeatureStyle(StylingUtil.createStyleSimple(selectedFeatures,
@@ -409,9 +409,8 @@
* schmitzm.geotools.feature.FeatureOperationTree
* .evaluate(FeatureOperationTree.java:92) at
* schmitzm.lang.tree.OperationTree.evaluate(OperationTree.java:181)
- * mapPane.zoomTo(getFeatureCollection()); //
*/
-
+ //mapPane.zoomTo(getFeatureCollection()); //
}
// Vorschaukarte aktualisieren
Modified: trunk/src/schmitzm/swing/OperationTreePanel.java
===================================================================
--- trunk/src/schmitzm/swing/OperationTreePanel.java 2009-07-07 17:07:06 UTC (rev 200)
+++ trunk/src/schmitzm/swing/OperationTreePanel.java 2009-07-07 18:27:36 UTC (rev 201)
@@ -118,7 +118,7 @@
avOperators.add("round"); fillOperatorDescMaps("round", "round");
avOperators.add("trunc"); fillOperatorDescMaps("trunc", "trunc");
avOperators.add("isNaN"); fillOperatorDescMaps("isNaN", "isNaN");
- avOperators.add("NaN");
+ avOperators.add("NaN"); fillOperatorDescMaps("NaN", "NaN");
avOperators.add("random"); fillOperatorDescMaps("random", "random");
avOperators.add("sin"); fillOperatorDescMaps("sin", "sin");
avOperators.add("cos"); fillOperatorDescMaps("cos", "cos");
@@ -195,6 +195,7 @@
opDesc, // Angezeigte Operatoren
avOperatorsToolTip // Angezeigte Tooltips fuer die Operatoren
);
+ SwingUtil.setPreferredWidth(operators, 150);
operatorsComboBox = ((JComboBox)operators.getInputComponent());
operatorsComboBox.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
@@ -237,7 +238,7 @@
// Tooltip zum Operator
// --> Map fuer ComboBox-Tooltip muss ueber die in der ComboBox
// angezeigten Werte (also "desc") erstellt werden!
- avOperatorsToolTip.put(desc, SwingUtil.RESOURCE.getString("OperationTreePanel.OpTooltip."+opKey) );
+ avOperatorsToolTip.put(desc, desc+": "+SwingUtil.RESOURCE.getString("OperationTreePanel.OpTooltip."+opKey) );
}
/**
@@ -393,7 +394,7 @@
return 2;
// Funktionen mit drei geklammerten Parameter
- if (op.equalsIgnoreCase("ITE") )
+ if (op.equalsIgnoreCase("ITE") || op.equalsIgnoreCase("SUBSTR") )
return 3;
// sonst: Konstante/Alias angenommen
Modified: trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties
===================================================================
--- trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties 2009-07-07 17:07:06 UTC (rev 200)
+++ trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties 2009-07-07 18:27:36 UTC (rev 201)
@@ -36,12 +36,15 @@
OperationTreePanel.OpDesc.not=NICHT
OperationTreePanel.OpDesc.abs=abs($NUMBER)
OperationTreePanel.OpDesc.random=Zufallszahl
+OperationTreePanel.OpDesc.asin=arcsin($NUMBER)
+OperationTreePanel.OpDesc.acos=arccos($NUMBER)
OperationTreePanel.OpDesc.str=str($NUMBER)
OperationTreePanel.OpDesc.val=val($TEXT)
OperationTreePanel.OpDesc.len=len($TEXT)
OperationTreePanel.OpDesc.toupper=toupper($TEXT)
OperationTreePanel.OpDesc.tolower=tolower($TEXT)
+OperationTreePanel.OpDesc.ite=WENN .. DANN .. SONST ..
OperationTreePanel.OpDesc.plus=+
OperationTreePanel.OpDesc.minus=-
@@ -59,20 +62,34 @@
OperationTreePanel.OpTooltip.or=Liefert WAHR, sobald ein Argument WAHR ist.
OperationTreePanel.OpTooltip.not=Invertiet WAHR zu FALSCH und FLASCH zu WAHR.
OperationTreePanel.OpTooltip.abs=Absoluter Wert einer Zahl.
+OperationTreePanel.OpTooltip.sqrt=Liefert die Wurzel einer Zahl.
+OperationTreePanel.OpTooltip.round=Rundet eine Dezimal-Zahl zu einer Ganzzahl.
+OperationTreePanel.OpTooltip.trunc=Schneidet Nachkommastellen ab.
+OperationTreePanel.OpTooltip.isNaN=Liefert WAHR, wenn die Zahl "keine Zahl" ist (z.B. bei Division durch Null).
+OperationTreePanel.OpTooltip.NaN=Der Wert "keine Zahl".
OperationTreePanel.OpTooltip.random=Liefert eine Zufallszahl zwischen 0 und 1.
-
+OperationTreePanel.OpTooltip.sin=Liefert den Sinus-Wert zu einer Zahl.
+OperationTreePanel.OpTooltip.cos=Liefert den Cosinus-Wert zu einer Zahl.
+OperationTreePanel.OpTooltip.tan=Liefert den Tangenz-Wert zu einer Zahl.
+OperationTreePanel.OpTooltip.asin=Liefert den Arcus-Sinus-Wert zu einer Zahl.
+OperationTreePanel.OpTooltip.acos=Liefert den Arcus-Cosinus-Wert zu einer Zahl.
+OperationTreePanel.OpTooltip.atan=Liefert den Arcus-Tangens-Wert zu einer Zahl.
+OperationTreePanel.OpTooltip.exp=Berechnet die Exponenzialfunktion (e^x).
+OperationTreePanel.OpTooltip.ln=Berechnet die Logarithmus-Funktion zur Basis e.
+OperationTreePanel.OpTooltip.log=Berechnet die Logarithmus-Funktion zur Basis 10.
OperationTreePanel.OpTooltip.str=Konvertiert eine Zahl in einen Text.
OperationTreePanel.OpTooltip.val=Konvertiert einen Text in eine Zahl.
OperationTreePanel.OpTooltip.len=Berechnet die Länge eines Texts.
OperationTreePanel.OpTooltip.toupper=Konvertiert Text in Großbuchstaben.
OperationTreePanel.OpTooltip.tolower=Konvertiert Text in Kleinbuchstaben.
OperationTreePanel.OpTooltip.ite=Spezifiziert einen logischen Test.
-
+OperationTreePanel.OpTooltip.regex=Wertet einen regulären Ausdruck auf einem Text aus.
+OperationTreePanel.OpTooltip.substr=Liefert einen Teil-String.
OperationTreePanel.OpTooltip.plus=Addition
-OperationTreePanel.OpTooltip.minus=-Subtraktion
+OperationTreePanel.OpTooltip.minus=Subtraktion
OperationTreePanel.OpTooltip.multiply=Multiplikation
OperationTreePanel.OpTooltip.divide=Division
-
+OperationTreePanel.OpTooltip.pow=Potenzfunktion
OperationTreePanel.OpTooltip.eq=Gleich
OperationTreePanel.OpTooltip.ne=Ungleich
OperationTreePanel.OpTooltip.lt=Kleiner als
More information about the Schmitzm-commits
mailing list