thanks.. how about implementing the caching/listener approach if you like to have icon? ..ede
On 13.11.2016 18:57, Giuseppe Aruta wrote: > Ok Ede, I didn't know it. I will revert the change. > Thanks again > Peppe > > Il 13/Nov/2016 18:48, <edgar.sol...@web.de> ha scritto: > >> Peppe, >> >> NACK.. this is going to get very slow for huge datasets containing empty >> geoms only, as it is run on every redraw of the layer tree. please cache >> the state and use a layer change listener or else users will complain about >> a frozen OJ some time in the future and we will have a hard time to >> pinpoint the reason, again ;) >> >> ..ede >> >> On 13.11.2016 18:41, jump-pilot-...@lists.sourceforge.net wrote: >>> Revision: 5185 >>> http://sourceforge.net/p/jump-pilot/code/5185 >>> Author: ma15569 >>> Date: 2016-11-13 17:41:37 +0000 (Sun, 13 Nov 2016) >>> Log Message: >>> ----------- >>> The layer tree shows a table icon for layers that have features with >> empty geometries >>> >>> Modified Paths: >>> -------------- >>> core/trunk/src/com/vividsolutions/jump/workbench/ >> ui/LayerNameRenderer.java >>> >>> Modified: core/trunk/src/com/vividsolutions/jump/workbench/ >> ui/LayerNameRenderer.java >>> =================================================================== >>> --- >>> core/trunk/src/com/vividsolutions/jump/workbench/ui/LayerNameRenderer.java >> 2016-11-13 17:21:20 UTC (rev 5184) >>> +++ >>> core/trunk/src/com/vividsolutions/jump/workbench/ui/LayerNameRenderer.java >> 2016-11-13 17:41:37 UTC (rev 5185) >>> @@ -36,6 +36,7 @@ >>> import java.awt.Rectangle; >>> import java.io.File; >>> import java.util.Iterator; >>> +import java.util.List; >>> >>> import javax.swing.DefaultListCellRenderer; >>> import javax.swing.Icon; >>> @@ -54,9 +55,11 @@ >>> import org.openjump.core.rasterimage.RasterImageLayer; >>> >>> import com.vividsolutions.jts.geom.Envelope; >>> +import com.vividsolutions.jts.geom.Geometry; >>> import com.vividsolutions.jump.I18N; >>> import com.vividsolutions.jump.feature.Feature; >>> import com.vividsolutions.jump.feature.FeatureCollection; >>> +import com.vividsolutions.jump.feature.FeatureCollectionWrapper; >>> import com.vividsolutions.jump.io.datasource.DataSourceQuery; >>> import com.vividsolutions.jump.util.StringUtil; >>> import com.vividsolutions.jump.workbench.JUMPWorkbench; >>> @@ -118,6 +121,7 @@ >>> private ImageIcon rasterIcon = IconLoader.icon("map_13.png"); >>> private ImageIcon sextante_rasterIcon = IconLoader.icon("mapSv2_13. >> png"); >>> private ImageIcon sextante_rasterIcon2 = >> IconLoader.icon("mapSv2_13bw.png"); >>> + private ImageIcon table_Icon = IconLoader.icon("Table.gif"); >>> private final static String LAYER_NAME = I18N >>> .get("org.openjump.core.ui.plugin.layer. >> LayerPropertiesPlugIn.Layer-Name"); >>> private final static String FILE_NAME = >> I18N.get("ui.MenuNames.FILE"); >>> @@ -379,6 +383,12 @@ >>> .getFeatureCollectionWrapper().size() > 1 ? >> multiRasterIcon >>> : rasterIcon); >>> imageLabel.setVisible(true); >>> + } else if (showColorPanel && layerable instanceof Layer >>> + && isTable((Layer) layerable)) { >>> + //Show a table icon if the Layer has features with empty >> geometries >>> + imageLabel.setIcon(table_Icon); >>> + imageLabel.setVisible(true); >>> + >>> } else if (showColorPanel && layerable instanceof Layer) { >>> colorPanel.init((Layer) layerable, isSelected, >>> list.getBackground(), list.getSelectionBackground()) >> ; >>> @@ -1022,4 +1032,27 @@ >>> && bgc.equals(p.getBackground()) && p.isOpaque(); >>> return !colorMatchOrOpaque && super.isOpaque(); >>> } >>> + >>> + /* >>> + * [Giuseppe Aruta 11.2016] . True if all the layer geometries are >> empty >>> + * (Geometrycollection empty). Workaround to decode table files >> (like .csv or .dbf) >>> + * so that they are loaded in Sextante as table >>> + */ >>> + public static boolean isTable(Layer layer) { >>> + FeatureCollectionWrapper featureCollection = layer >>> + .getFeatureCollectionWrapper(); >>> + List featureList = featureCollection.getFeatures(); >>> + Geometry nextGeo = null; >>> + for (@SuppressWarnings("unchecked") >>> + Iterator<FeatureCollectionWrapper> i = featureList.iterator(); >> i >>> + .hasNext();) { >>> + Feature feature = (Feature) i.next(); >>> + nextGeo = feature.getGeometry(); >>> + } >>> + if (!featureCollection.isEmpty() && nextGeo.isEmpty()) { >>> + return true; >>> + } else { >>> + return false; >>> + } >>> + } >>> } >>> \ No newline at end of file >>> >>> >>> ------------------------------------------------------------ >> ------------------ >>> Developer Access Program for Intel Xeon Phi Processors >>> Access to Intel Xeon Phi processor-based developer platforms. >>> With one year of Intel Parallel Studio XE. >>> Training and support from Colfax. >>> Order your platform today. http://sdm.link/xeonphi >>> _______________________________________________ >>> Jump-pilot-devel mailing list >>> Jump-pilot-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel >>> >> >> ------------------------------------------------------------ >> ------------------ >> Developer Access Program for Intel Xeon Phi Processors >> Access to Intel Xeon Phi processor-based developer platforms. >> With one year of Intel Parallel Studio XE. >> Training and support from Colfax. >> Order your platform today. http://sdm.link/xeonphi >> _______________________________________________ >> Jump-pilot-devel mailing list >> Jump-pilot-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel >> > > > > ------------------------------------------------------------------------------ > Developer Access Program for Intel Xeon Phi Processors > Access to Intel Xeon Phi processor-based developer platforms. > With one year of Intel Parallel Studio XE. > Training and support from Colfax. > Order your platform today. http://sdm.link/xeonphi > > > > _______________________________________________ > Jump-pilot-devel mailing list > Jump-pilot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel