[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