Hi. @Ede 1) that is something added by eclipse ( http://stackoverflow.com/questions/654037/what-does-non-nls-1-mean). I took it away from the WMS-related files, but you will find it in several other files.
2) yes, changing the API of TaskFrame wasn't brilliant... I reverted to it's original state. For the neat implementation of InfoRequest, it will be done, but I need some more time. @Jukka I changed the method used to retrieve the url as you suggested. I added the FEATURE_COUNT=10 parameter, and I limited the WMS info to the visible layers. Not visible and selected, just visible, to make it consistent with vector layers. Alberto On 24 December 2015 at 13:02, <edgar.sol...@web.de> wrote: > hey Alberto, > > i have some questions/comments > > 1. > in several files eg. Parser.java you added lines ending with > '//$NON-NLS-1$' . why? > > 2. > you insert wms code (url appending) directly into the featureinfotool up > to the point that it even runs the web request. > why don't you use the wms package? i see you added the info url to the > capabilities already. would you mind implementing that cleanly with a > InfoRequest object along the lines of existing MapRequest.java . this way > you can reuse all the magic there is already including auth/proxy usage. > changing the API of TaskFrame to an IOException throwing getInfoFrame() is > an absolute no go from my point of view. > > how long would it take for you to fix it? keep in mind, we can easily slip > in a clean version with the first maintenance release. so no hurry. > > ..ede > > > On 24.12.2015 00:18, Alberto De Luca wrote: > > Right sorry, > > > > I think Parser.java was the culprit. I had deleted it locally, but not on > > the server. It is no longer needed actually, but instead of deleting it I > > edited to make it compatible with the modified WMS classes (so we can > keep > > it, you never know...). > > > > Apparently it builds now, let me know. > > Alberto > > > > On 23 December 2015 at 22:00, <edgar.sol...@web.de> wrote: > > > >> Alberto, > >> > >> your commit seems incomplete.. ede > >> > >> > >> On 23.12.2015 18:28, Rahkonen Jukka (MML) wrote: > >>> Hi, > >>> > >>> r4663 did not build > >>> > >> > http://sourceforge.net/projects/jump-pilot/files/OpenJUMP_snapshots/OpenJUMP-20151223-r4663.log/download > >>> > >>> -Jukka Rahkonen- > >>> > >>> > >>> -----Alkuperäinen viesti----- > >>> Lähettäjä: jump-pilot-...@lists.sourceforge.net [mailto: > >> jump-pilot-...@lists.sourceforge.net] > >>> Lähetetty: 23. joulukuuta 2015 18:27 > >>> Vastaanottaja: jump-pilot-devel@lists.sourceforge.net > >>> Aihe: [JPP-Devel] SVN: [4663] core/trunk > >>> > >>> Revision: 4663 > >>> http://sourceforge.net/p/jump-pilot/code/4663 > >>> Author: bertazza > >>> Date: 2015-12-23 16:26:41 +0000 (Wed, 23 Dec 2015) > >>> Log Message: > >>> ----------- > >>> Info feature tool: added a pane to show WMS info. > >>> > >>> Modified Paths: > >>> -------------- > >>> core/trunk/ChangeLog > >>> core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java > >>> > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java > >>> core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java > >>> > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java > >>> core/trunk/src/com/vividsolutions/wms/AbstractParser.java > >>> core/trunk/src/com/vividsolutions/wms/Capabilities.java > >>> core/trunk/src/com/vividsolutions/wms/MapLayer.java > >>> core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java > >>> core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java > >>> core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java > >>> core/trunk/src/com/vividsolutions/wms/WMService.java > >>> core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java > >>> > >>> Added Paths: > >>> ----------- > >>> > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl > >>> core/trunk/src/com/vividsolutions/wms/MapStyle.java > >>> > >>> Modified: core/trunk/ChangeLog > >>> =================================================================== > >>> --- core/trunk/ChangeLog 2015-12-23 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/ChangeLog 2015-12-23 16:26:41 UTC (rev 4663) > >>> @@ -3,6 +3,8 @@ > >>> # 2. make sure that lines break at 80 chars for constricted display > >> situations > >>> #<-------------------------------- 80 chars > >> ----------------------------------># > >>> > >>> +2015-12-23 bertazza > >>> + * Info feature tool: added a pane to show WMS info. > >>> > >>> <----------------------------------------------- Changes.txt updated > >> 'til here > >>> 2015-12-21 bertazza > >>> > >>> Modified: > >> core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java > >> 2015-12-23 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java > >> 2015-12-23 16:26:41 UTC (rev 4663) > >>> @@ -61,6 +61,8 @@ > >>> import com.vividsolutions.jump.workbench.ui.images.IconLoader; > >>> import > >> com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn; > >>> import > com.vividsolutions.jump.workbench.ui.plugin.ViewAttributesPlugIn; > >>> +import java.io.IOException; > >>> +import javax.swing.JEditorPane; > >>> import javax.swing.JScrollPane; > >>> import javax.swing.JTable; > >>> import javax.swing.table.DefaultTableModel; > >>> @@ -99,16 +101,18 @@ > >>> private GeometryInfoTab geometryInfoTab; > >>> private JTabbedPane tabbedPane = new JTabbedPane(); > >>> private RasterInfoTab rasterInfoTab; > >>> + private WMSInfoTab wmsInfoTab; > >>> private WorkbenchFrame workbenchFrame; > >>> private static ImageIcon ICON = > >> IconLoader.icon("information_16x16.png"); > >>> > >>> public InfoFrame( > >>> WorkbenchContext workbenchContext, > >>> LayerManagerProxy layerManagerProxy, > >>> - final TaskFrame taskFrame) { > >>> + final TaskFrame taskFrame) throws IOException { > >>> blackboard = > >> PersistentBlackboardPlugIn.get(workbenchContext); > >>> geometryInfoTab = new GeometryInfoTab(model, > workbenchContext); > >>> rasterInfoTab = new RasterInfoTab(null, null); > >>> + wmsInfoTab = new WMSInfoTab(); > >>> //Keep my own copy of LayerManager, because it will be nulled > >> in TaskFrame > >>> //when TaskFrame closes (it may in fact already be closed, > >> which is why > >>> //a LayerManagerProxy must be passed in too). But I have to @@ > >> -150,6 +154,7 @@ > >>> tabbedPane.addTab("", IconLoader.icon("Table.gif"), > >> attributeTab, TABLE_VIEW); > >>> tabbedPane.addTab("", IconLoader.icon("Paper.gif"), > >> geometryInfoTab, HTML_VIEW); > >>> tabbedPane.addTab("R", null, rasterInfoTab, "Raster"); > >>> + tabbedPane.addTab("WMS", null, wmsInfoTab, "WMS"); > >>> updateTitle(taskFrame.getTask().getName()); > >>> taskFrame.getTask().add(new Task.NameListener() { > >>> public void taskNameChanged(String name) { @@ -274,6 > >> +279,10 @@ > >>> rasterInfoTab.setRasterValues(layerNames, cellValues); > >>> } > >>> > >>> + public void setWmsInfo(String string) { > >>> + wmsInfoTab.setWmsInfoText(string); > >>> + } > >>> + > >>> @Override > >>> public JFrame getFrame() { > >>> // our frame has to be all proxies InfoFrame is @@ -361,5 > +370,32 > >> @@ > >>> } > >>> > >>> } > >>> + > >>> + protected class WMSInfoTab extends JPanel { > >>> + > >>> + private final JEditorPane jEditorPane; > >>> + > >>> + public WMSInfoTab() throws IOException { > >>> + > >>> + setLayout(new BorderLayout()); > >>> + > >>> + jEditorPane = new JEditorPane(); > >>> + jEditorPane.setEditable(false); > >>> + JScrollPane jScrollPane = new JScrollPane( > >>> + jEditorPane, > >>> + JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, > >>> + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); > >>> + > >>> + this.add(jScrollPane); > >>> + > >>> + } > >>> + > >>> + public void setWmsInfoText(String wmsInfo) { > >>> + > >>> + jEditorPane.setText(wmsInfo); > >>> + > >>> + } > >>> + > >>> + } > >>> > >>> } > >>> > >>> Modified: > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java > >>> =================================================================== > >>> --- > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java > >> 2015-12-23 15:39:50 UTC (rev 4662) > >>> +++ > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java > >> 2015-12-23 16:26:41 UTC (rev 4663) > >>> @@ -34,6 +34,7 @@ > >>> > >>> import com.vividsolutions.jump.workbench.WorkbenchContext; > >>> import com.vividsolutions.jump.workbench.model.LayerManagerProxy; > >>> +import java.io.IOException; > >>> > >>> > >>> /** > >>> @@ -44,7 +45,7 @@ > >>> * positions InfoFrames differently depending on whether or not they > >> are primary. > >>> */ > >>> public class PrimaryInfoFrame extends InfoFrame { > >>> - public PrimaryInfoFrame(WorkbenchContext workbenchContext, > >> LayerManagerProxy layerManagerProxy, TaskFrame taskFrame) { > >>> + public PrimaryInfoFrame(WorkbenchContext workbenchContext, > >>> + LayerManagerProxy layerManagerProxy, TaskFrame taskFrame) throws > >>> + IOException { > >>> super(workbenchContext, layerManagerProxy, taskFrame); > >>> } > >>> } > >>> > >>> Modified: > >> core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java > >> 2015-12-23 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java > >> 2015-12-23 16:26:41 UTC (rev 4663) > >>> @@ -53,6 +53,7 @@ > >>> import com.vividsolutions.jump.workbench.ui.renderer.Renderer; > >>> > >>> import com.vividsolutions.jump.workbench.ui.zoom.ZoomBar; > >>> +import java.io.IOException; > >>> > >>> public class TaskFrame extends JInternalFrame implements > TaskFrameProxy, > >>> CloneableInternalFrame, LayerViewPanelProxy, > >> LayerNamePanelProxy, @@ -223,7 +224,7 @@ > >>> return task.getLayerManager(); > >>> } > >>> > >>> - public InfoFrame getInfoFrame() { > >>> + public InfoFrame getInfoFrame() throws IOException { > >>> if (infoFrame == null || infoFrame.isClosed()) { > >>> infoFrame = new PrimaryInfoFrame(workbenchContext, this, > >> this); > >>> } > >>> > >>> Modified: > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java > >>> =================================================================== > >>> --- > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java > >> 2015-12-23 15:39:50 UTC (rev 4662) > >>> +++ > >> > core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java > >> 2015-12-23 16:26:41 UTC (rev 4663) > >>> @@ -34,6 +34,7 @@ > >>> package com.vividsolutions.jump.workbench.ui.cursortool; > >>> > >>> import com.vividsolutions.jts.geom.Coordinate; > >>> +import com.vividsolutions.jts.geom.Envelope; > >>> import java.awt.Color; > >>> import java.awt.Cursor; > >>> import java.awt.Image; > >>> @@ -49,9 +50,27 @@ > >>> import com.vividsolutions.jump.workbench.model.FenceLayerFinder; > >>> import com.vividsolutions.jump.workbench.model.Layer; > >>> import com.vividsolutions.jump.workbench.model.Layerable; > >>> +import com.vividsolutions.jump.workbench.model.WMSLayer; > >>> import com.vividsolutions.jump.workbench.ui.InfoFrame; > >>> import com.vividsolutions.jump.workbench.ui.images.IconLoader; > >>> +import com.vividsolutions.wms.WMService; import java.awt.geom.Point2D; > >>> +import java.io.File; import java.io.FileOutputStream; import > >>> +java.io.FileReader; import java.io.IOException; import > >>> +java.net.HttpURLConnection; import java.net.URL; import > >>> +java.net.URLEncoder; > >>> import java.util.List; > >>> +import javax.swing.JDialog; > >>> +import javax.swing.JEditorPane; > >>> +import javax.swing.JScrollPane; > >>> +import javax.xml.transform.Transformer; import > >>> +javax.xml.transform.TransformerFactory; > >>> +import javax.xml.transform.stream.StreamResult; > >>> +import javax.xml.transform.stream.StreamSource; > >>> +import org.apache.commons.io.IOUtils; > >>> import org.openjump.core.rasterimage.RasterImageLayer; > >>> import > >> > org.openjump.core.rasterimage.RasterImageLayer.RasterDataNotFoundException; > >>> > >>> @@ -90,8 +109,79 @@ > >>> infoFrame.getModel().add(layer, features); > >>> } > >>> > >>> + Coordinate coord = > >>> + getPanel().getViewport().toModelCoordinate(getViewSource()); > >>> + > >>> + // WMS > >>> + List<Layerable> wmsLay_l = > >> > getWorkbench().getContext().getLayerManager().getLayerables(WMSLayer.class); > >>> + String response = ""; > >>> + for(Layerable lay : wmsLay_l) { > >>> + WMSLayer wmsLayer = (WMSLayer) lay; > >>> + > >>> + String featInfoUrl = > >> wmsLayer.getService().getCapabilities().getFeatureInfoURL(); > >>> + String names = getWmsLayeNames(wmsLayer); > >>> + > >>> + Point2D point = > getPanel().getViewport().toViewPoint(coord); > >>> + Envelope bbox = > >>> + getPanel().getViewport().getEnvelopeInModelCoordinates(); > >>> + > >>> + if (featInfoUrl.contains("?")) { > >>> + featInfoUrl += "&"; > >>> + } else { > >>> + featInfoUrl += "?"; > >>> + } > >>> + String version = wmsLayer.getWmsVersion(); > >>> + if (WMService.WMS_1_0_0.equals(version)) { > >>> + featInfoUrl += "REQUEST=feature_info&WMTVER=1.0.0"; > >>> + } else if (WMService.WMS_1_1_0.equals(version) || > >>> + WMService.WMS_1_1_1.equals(version) || > >>> + WMService.WMS_1_3_0.equals(version)) { > >>> + featInfoUrl += > >> "REQUEST=GetFeatureInfo&SERVICE=WMS&VERSION=" + version; > >>> + } > >>> + > >>> + featInfoUrl += "&QUERY_LAYERS=" + names + "&LAYERS=" + > >> names; > >>> + if (WMService.WMS_1_3_0.equals(version)) { > >>> + featInfoUrl += "&CRS=" + wmsLayer.getSRS() + > >>> + "&I=" + (int) point.getX() + > >>> + "&J=" + (int) point.getY(); > >>> + } else { > >>> + featInfoUrl += "&SRS=" + wmsLayer.getSRS() + > >>> + "&X=" + (int) point.getX() + > >>> + "&Y=" + (int) point.getY(); > >>> + } > >>> + > >>> + featInfoUrl += "&WIDTH=" + getPanel().getWidth() + > >>> + "&HEIGHT=" + getPanel().getHeight() + > >>> + "&BBOX=" + bbox.getMinX() + "," + bbox.getMinY() + > >> "," + bbox.getMaxX() + "," + bbox.getMaxY() + > >>> + "&STYLES=" + > >>> + "&FORMAT=" + wmsLayer.getFormat(); > >>> + > >>> + if (!WMService.WMS_1_0_0.equals(version)) { > >>> + try { > >>> + featInfoUrl += "&INFO_FORMAT=" + > >> wmsLayer.getService().getCapabilities().getInfoFormat(); > >>> + } catch (IOException e) { > >>> + featInfoUrl += "&INFO_FORMAT=text/plain"; > >>> + } > >>> + } > >>> + > >>> + URL url = stripXhtmlTags(featInfoUrl); > >>> + > >>> + String newLine = System.getProperty("line.separator"); > >>> + response = response.concat("+ > >>> + ").concat(wmsLayer.getName()).concat(newLine); > >>> + > >>> + String wmsResponse; > >>> + try { > >>> + wmsResponse = IOUtils.toString(url.openStream()); > >>> + wmsResponse = cleanWmsResponse(wmsResponse); > >>> + } catch(Exception ex) { > >>> + wmsResponse = ex.toString(); > >>> + wmsResponse = wmsResponse.concat(newLine); > >>> + } > >>> + response = response.concat(wmsResponse); > >>> + response = response.concat(newLine); > >>> + > >>> + }; > >>> + infoFrame.setWmsInfo(response); > >>> + > >>> // Raster data > >>> - Coordinate coord = > >> getPanel().getViewport().toModelCoordinate(getViewSource()); > >>> List<Layerable> layerables_l = > >> > getWorkbench().getContext().getLayerManager().getLayerables(RasterImageLayer.class); > >>> > >>> String[] layerNames = new String[layerables_l.size()]; @@ > >> -122,15 +212,78 @@ > >>> } catch(RasterDataNotFoundException ex) { > >>> cellValues[l] = "???"; > >>> } > >>> - > >>> - > >>> - > >>> } > >>> } > >>> } > >>> > >>> - infoFrame.setRasterValues(layerNames, cellValues); > >>> - > >>> + infoFrame.setRasterValues(layerNames, cellValues); > >>> infoFrame.surface(); > >>> } > >>> + > >>> + private String getWmsLayeNames(WMSLayer selLayer) { > >>> + int i; > >>> + String names = ""; > >>> + List<String> layerNames = selLayer.getLayerNames(); > >>> + for (i=0; i< layerNames.size(); ++i) { > >>> + String name = (String) layerNames.get(i); > >>> + try { > >>> + name = URLEncoder.encode(name, "UTF-8"); > >>> + } catch (Exception ignored) { > >>> + } > >>> + names += name; > >>> + if (i < layerNames.size() - 1) { > >>> + names += ","; > >>> + } > >>> + } > >>> + > >>> + return names; > >>> + } > >>> + > >>> + private URL stripXhtmlTags(String serverURL) throws Exception { > >>> + > >>> + File tmpFile = File.createTempFile("wms", "q"); > >>> + FileOutputStream cleanHtml = new FileOutputStream(tmpFile); > >>> + boolean resOk = true; > >>> + //String xsl = > >> (String)getClass().getResource("clean.xsl").getContent(); > >>> + //System.out.println("Ecco l'xsl: "+xsl); > >>> + Transformer pulizia = > >> TransformerFactory.newInstance().newTransformer( > >>> + new > >> StreamSource(getClass().getResourceAsStream("clean.xsl"))); > >>> + try { > >>> + pulizia.transform(new StreamSource(serverURL), > >>> + new StreamResult(cleanHtml)); > >>> + } catch (Exception te) { > >>> + //System.out.println("XSLT Error: "+te.getMessage()); > >>> + resOk = false; > >>> + } finally { > >>> + cleanHtml.close(); > >>> + } > >>> + // [DR] gestione file vuoti > >>> + if (!resOk || !(new FileReader(tmpFile).ready())) { > >>> + /* > >>> + FileWriter noResponse = new FileWriter(tmpFile); > >>> + noResponse.write("<html><body><h2>Risultati > >> interrogazione</h2>"+ > >>> + "Il server non ha restituito alcun > >> risultato.</body></html>"); > >>> + noResponse.close(); > >>> + */ > >>> + //gestione risposte non html (testuali) > >>> + return new URL(serverURL); > >>> + } > >>> + return tmpFile.toURI().toURL(); > >>> + } > >>> + > >>> + private String cleanWmsResponse(String inputWms) { > >>> + > >>> + String pattern = "GetFeatureInfo results:"; > >>> + int index = inputWms.indexOf(pattern); > >>> + if(index != -1) { > >>> + int endIndex = index + pattern.length(); > >>> + inputWms = inputWms.substring(endIndex); > >>> + if(inputWms.startsWith("\n\n")) { > >>> + inputWms = inputWms.replaceFirst("\n\n", ""); > >>> + } > >>> + } > >>> + > >>> + return inputWms; > >>> + } > >>> + > >>> } > >>> > >>> Added: > >> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl > >>> =================================================================== > >>> --- > >> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl > >> (rev 0) > >>> +++ > >> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl > >> 2015-12-23 16:26:41 UTC (rev 4663) > >>> @@ -0,0 +1,39 @@ > >>> +<?xml version="1.0" encoding="UTF-8"?> > >>> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > >>> + xmlns:xhtml="http://www.w3.org/1999/xhtml" > >>> + version="1.0"> > >>> + > >>> + <xsl:output method="html" version="3.2" /> > >>> + > >>> + <xsl:strip-space elements="*" /> > >>> + > >>> + <xsl:template match="/"> > >>> + <xsl:if test="not(html)"> > >>> + <html> > >>> + <head> > >>> + </head> > >>> + <body> > >>> + <xsl:apply-templates /> > >>> + </body> > >>> + </html> > >>> + </xsl:if> > >>> + </xsl:template> > >>> + > >>> + <xsl:template match="*"> > >>> + <xsl:choose> > >>> + <xsl:when test="local-name()='img'" /> > >>> + <xsl:otherwise> > >>> + <xsl:element name="{local-name()}"> > >>> + <xsl:apply-templates select="@*|node()"/> > >>> + </xsl:element> > >>> + </xsl:otherwise> > >>> + </xsl:choose> > >>> + </xsl:template> > >>> + > >>> + <xsl:template match="@*"> > >>> + <xsl:attribute name="{local-name()}"> > >>> + <xsl:value-of select="."/> > >>> + </xsl:attribute> > >>> + </xsl:template> > >>> + > >>> +</xsl:stylesheet> > >>> \ No newline at end of file > >>> > >>> Modified: core/trunk/src/com/vividsolutions/wms/AbstractParser.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/AbstractParser.java > 2015-12-23 > >> 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/wms/AbstractParser.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -39,7 +39,6 @@ > >>> > >>> import java.io.IOException; > >>> import java.io.InputStream; > >>> -import java.io.InputStreamReader; > >>> import java.util.ArrayList; > >>> import java.util.LinkedList; > >>> import java.util.List; > >>> @@ -48,7 +47,6 @@ > >>> import org.apache.xerces.parsers.DOMParser; > >>> import org.w3c.dom.CharacterData; > >>> import org.w3c.dom.Document; > >>> -import org.w3c.dom.Element; > >>> import org.w3c.dom.NamedNodeMap; > >>> import org.w3c.dom.Node; > >>> import org.w3c.dom.NodeList; > >>> @@ -155,9 +153,31 @@ > >>> } > >>> } > >>> } > >>> + > >>> return formatList; > >>> } > >>> > >>> + protected LinkedList<String> getInfoFormats(Document doc) { > >>> + > >>> + // get the supported infoFormats > >>> + final Node formatNode = XMLTools.simpleXPath(doc, > getRootPath() > >> + "/Capability/Request/GetMap"); > >>> + NodeList nl = formatNode.getChildNodes(); > >>> + > >>> + final Node infoFormatNode = XMLTools.simpleXPath(doc, > >> "WMT_MS_Capabilities/Capability/Request/GetFeatureInfo"); > >>> + LinkedList<String> infoFormatList = new LinkedList<String>(); > >>> + if (infoFormatNode != null) { > >>> + nl = infoFormatNode.getChildNodes(); > >>> + for (int i = 0; i < nl.getLength(); i++) { > >>> + Node n = nl.item(i); > >>> + if (n.getNodeType() == Node.ELEMENT_NODE && > >> "Format".equals(n.getNodeName())) { > >>> + > >> infoFormatList.add(n.getFirstChild().getNodeValue()); > >>> + } > >>> + } > >>> + } > >>> + > >>> + return infoFormatList; > >>> + > >>> + } > >>> > >>> /** > >>> * Traverses the DOM tree underneath the specified Node and > >> generates @@ -174,6 +194,7 @@ > >>> LinkedList<MapLayer> subLayers = new LinkedList<MapLayer>(); > >>> BoundingBox geographicBBox = null; > >>> ArrayList<BoundingBox> boundingBoxList = new > >> ArrayList<BoundingBox> ( ); > >>> + List<MapStyle> styles = new ArrayList<MapStyle>(); > >>> > >>> NodeList nl = layerNode.getChildNodes(); > >>> > >>> @@ -199,6 +220,44 @@ > >>> boundingBoxList.add ( new > >> BoundingBox("Geographics", geographicBBox.getEnvelope()) ); > >>> } else if( n.getNodeName().equals( "Layer" ) ) { > >>> subLayers.add( wmsLayerFromNode( n ) ); > >>> + } else if (n.getNodeName().equals("Style")) { > >> //$NON-NLS-1$ > >>> + String styleName = ""; //$NON-NLS-1$ > >>> + String titleName = ""; //$NON-NLS-1$ > >>> + String legendFormat = ""; //$NON-NLS-1$ > >>> + String url = ""; //$NON-NLS-1$ > >>> + int h=0,w=0; > >>> + NodeList nodeStyle = n.getChildNodes(); > >>> + for( int k = 0; k < nodeStyle.getLength(); k++ > >> ) { > >>> + Node n1 = nodeStyle.item(k); > >>> + if (n1.getNodeName().equals("Name")) { > >> //$NON-NLS-1$ > >>> + styleName = ((CharacterData) > >> n1.getFirstChild()).getData(); > >>> + } else if > (n1.getNodeName().equals("Title") > >> & n1.hasChildNodes()) { //$NON-NLS-1$ > >>> + titleName = ((CharacterData) > >> n1.getFirstChild()).getData(); > >>> + } else if > >> (n1.getNodeName().equals("LegendURL")) { //$NON-NLS-1$ > >>> + try { > >>> + > >> > h=Integer.parseInt(n1.getAttributes().getNamedItem("height").getNodeValue()); > >>> + > >> > w=Integer.parseInt(n1.getAttributes().getNamedItem("width").getNodeValue()); > >>> + } > >>> + catch (Exception e) { > >>> + e.printStackTrace(); > >>> + throw new Exception(e.toString()); > >>> + } > >>> + NodeList nodelegend = > >> n1.getChildNodes(); > >>> + for( int k1 = 0; k1 < > >> nodelegend.getLength(); k1++ ) { > >>> + Node n2 = nodelegend.item(k1); > >>> + if > >> (n2.getNodeName().equals("Format")) { //$NON-NLS-1$ > >>> + legendFormat = > >>> + ((CharacterData) > >> n2.getFirstChild()).getData(); > >>> + } else if > >> (n2.getNodeName().equals("OnlineResource")) { //$NON-NLS-1$ > >>> + url = > >>> + n2.getAttributes() > >>> + > >> .getNamedItem("xlink:href").getNodeValue(); //$NON-NLS-1$ > >>> + } > >>> + } > >>> + > >>> + } > >>> + } > >>> + styles.add(new MapStyle(styleName, titleName, > >>> + url, legendFormat,w,h)); > >>> } > >>> } > >>> } catch( Exception e ) { > >>> @@ -208,7 +267,7 @@ > >>> } > >>> > >>> // call the new constructor with boundingBoxList in MapLayer > >> [uwe dalluege] > >>> - return new MapLayer(name, title, srsList, subLayers, > >> geographicBBox, boundingBoxList); > >>> + return new MapLayer(name, title, srsList, subLayers, > >>> + geographicBBox, boundingBoxList, styles); > >>> } > >>> > >>> protected void addSRSNode(Node n, List<String> srsList) throws > >> Exception { > >>> > >>> Modified: core/trunk/src/com/vividsolutions/wms/Capabilities.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/Capabilities.java > 2015-12-23 > >> 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/wms/Capabilities.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -51,8 +51,9 @@ > >>> private String title; > >>> private ArrayList mapFormats; > >>> private WMService service; > >>> - private String getMapURL, getFeatureInfoURL; > >>> - > >>> + private String getMapURL, featureInfoURL; private ArrayList > >>> + infoFormats; > >>> + > >>> /** > >>> * Creates a new WMS Capabilities object. Should generally only be > >> used by the Parser. > >>> * @param service the WMService to which these Capabilites belong @@ > >> -60,19 +61,22 @@ > >>> * @param topLayer the top MapLayer of the entire layer tree > >>> * @param mapFormats the Collection of supported formats > >>> */ > >>> - public Capabilities(WMService service, String title, MapLayer > >> topLayer, Collection mapFormats) { > >>> + public Capabilities(WMService service, String title, MapLayer > >> topLayer, > >>> + Collection mapFormats, Collection infoFormats) { > >>> this.service = service; > >>> this.title = title; > >>> this.topLayer = topLayer; > >>> this.mapFormats = new ArrayList( mapFormats ); > >>> + this.infoFormats = new ArrayList(infoFormats); > >>> this.getMapURL = service.getServerUrl(); > >>> - this.getFeatureInfoURL = service.getServerUrl(); > >>> + this.featureInfoURL = service.getServerUrl(); > >>> } > >>> > >>> - public Capabilities(WMService service, String title, MapLayer > >> topLayer, Collection mapFormats, String getMapURL, String > >> getFeatureInfoURL) { > >>> - this(service, title, topLayer, mapFormats); > >>> + public Capabilities(WMService service, String title, MapLayer > >> topLayer, > >>> + Collection mapFormats, Collection infoFormats, String > >> getMapURL, String featureInfoURL) { > >>> + this(service, title, topLayer, mapFormats, infoFormats); > >>> this.getMapURL = getMapURL; > >>> - this.getFeatureInfoURL = getFeatureInfoURL; > >>> + this.featureInfoURL = featureInfoURL; > >>> } > >>> > >>> /** > >>> @@ -121,8 +125,8 @@ > >>> return getMapURL; > >>> } > >>> > >>> - public String getGetFeatureInfoURL() { > >>> - return getFeatureInfoURL; > >>> + public String getFeatureInfoURL() { > >>> + return featureInfoURL; > >>> } > >>> > >>> public void setGetMapURL(String url) { @@ -142,5 +146,16 @@ > >>> } > >>> return formats; > >>> } > >>> + > >>> + public String getInfoFormat() { > >>> + String format = "text/plain"; > >>> + if (!infoFormats.contains(format)) { > >>> + Iterator it = infoFormats.iterator(); > >>> + if (it.hasNext()) { > >>> + format = (String) it.next(); > >>> + } > >>> + } > >>> + return format; > >>> + } > >>> > >>> } > >>> > >>> Modified: core/trunk/src/com/vividsolutions/wms/MapLayer.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/MapLayer.java > 2015-12-23 > >> 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/wms/MapLayer.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -63,10 +63,13 @@ > >>> // user modifiable members > >>> private boolean enabled = false; > >>> > >>> + private List<MapStyle> styles; > >>> + > >>> /** > >>> * Creates a new instance of MapLayer > >>> */ > >>> - public MapLayer(String name, String title, Collection srsList, > >> Collection subLayers, BoundingBox bbox) { > >>> + public MapLayer(String name, String title, Collection srsList, > >>> + Collection subLayers, BoundingBox bbox, List<MapStyle> > >>> + styles) { > >>> this.parent = null; > >>> this.name = name; > >>> this.title = title; > >>> @@ -77,15 +80,17 @@ > >>> (it.next()).parent = this; > >>> } > >>> this.bbox = bbox; > >>> + setStyles(styles); > >>> } > >>> > >>> /** > >>> * Creates a new instance of MapLayer with boundingBoxList [uwe > >> dalluege] > >>> */ > >>> - public MapLayer ( String name, String title, Collection srsList, > >> Collection subLayers, > >>> - BoundingBox bbox, ArrayList<BoundingBox> boundingBoxList > ) > >> { > >>> - this ( name, title, srsList, subLayers, bbox ); > >>> - this.boundingBoxList = boundingBoxList; > >>> + public MapLayer > >>> + ( String name, String title, Collection srsList, Collection > >> subLayers, > >>> + BoundingBox bbox, ArrayList > boundingBoxList,List<MapStyle> > >> styles ) { > >>> + this ( name, title, srsList, subLayers, bbox,styles ); > >>> + this.boundingBoxList = boundingBoxList; > >>> } > >>> > >>> > >>> @@ -297,8 +302,62 @@ > >>> if (parent != null) > fullSRSList.addAll(parent.getFullSRSList()); > >>> return fullSRSList; > >>> } > >>> + > >>> + /** > >>> + * Sets the selected WMS layer style > >>> + * > >>> + * @param selectedStyle > >>> + */ > >>> + public void setSelectedStyle( MapStyle selectedStyle ) { > >>> + for( Iterator<MapStyle> iter = styles.iterator(); > >> iter.hasNext(); ) { > >>> + MapStyle element = iter.next(); > >>> + element.setSelected(false, false); > >>> + } > >>> + selectedStyle.setSelected(true, false); > >>> + } > >>> + > >>> + /** > >>> + * Gets the WMS layer style by name > >>> + * > >>> + * @param styleName > >>> + * @return > >>> + */ > >>> + public MapStyle getStyle( String styleName ) { > >>> + for( Iterator<MapStyle> iter = styles.iterator(); > >> iter.hasNext(); ) { > >>> + MapStyle element = iter.next(); > >>> + if (element.getName().equals(styleName)) > >>> + return element; > >>> + } > >>> + return null; > >>> + } > >>> + > >>> + public List<MapStyle> getStyles() { > >>> + return styles; > >>> + } > >>> > >>> + /** > >>> + * @param sublayer > >>> + */ > >>> + public void setSublayer(ArrayList sublayer) { > >>> + this.subLayers = sublayer; > >>> + } > >>> + > >>> /** > >>> + * @param newStyles > >>> + */ > >>> + public void setStyles( List<MapStyle> newStyles ) { > >>> + this.styles = newStyles; > >>> + for( Iterator<MapStyle> iter = styles.iterator(); > >> iter.hasNext(); ) { > >>> + MapStyle element = iter.next(); > >>> + element.setLayer(this); > >>> + } > >>> + > >>> + if (!styles.isEmpty()) { > >>> + styles.get(0).setSelected(true, true); > >>> + } > >>> + } > >>> + > >>> + /** > >>> * Returns a somewhat nicely-formatted string representing all of > >> the details of > >>> * this layer and its sub-layers (recursively). > >>> * @return a somewhat nicely-formatted string representing all of > >> the details of > >>> > >>> Added: core/trunk/src/com/vividsolutions/wms/MapStyle.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/MapStyle.java > >> (rev 0) > >>> +++ core/trunk/src/com/vividsolutions/wms/MapStyle.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -0,0 +1,239 @@ > >>> +package com.vividsolutions.wms; > >>> + > >>> +import java.awt.image.BufferedImage; > >>> +import java.io.IOException; > >>> +import java.net.MalformedURLException; > >>> +import java.net.URL; > >>> +import java.util.Iterator; > >>> + > >>> +import javax.imageio.ImageIO; > >>> +import javax.swing.Icon; > >>> +import javax.swing.ImageIcon; > >>> + > >>> +import org.apache.log4j.Logger; > >>> + > >>> +/* > >>> + * Estilo asociado a una capa. Se caracteriza por tener asociado un > >>> + * nombre, un estilo y una leyenda > >>> + * @author Marco Antonio Fuentelsaz P?rez > >>> + * > >>> + */ > >>> +public class MapStyle { > >>> + > >>> + /** Log */ > >>> + private final static Logger LOGGER = > >>> + Logger.getLogger(MapStyle.class); > >>> + > >>> + /** Nombre asociado al estilo */ > >>> + private String name; > >>> + > >>> + /** Titulo asociado al estilo */ > >>> + private String title; > >>> + > >>> + /** URL asociado a la leyenda */ > >>> + private String urlLegend; > >>> + > >>> + /** Formato asociado a la leyenda */ > >>> + private String formatLegend; > >>> + > >>> + /** */ > >>> + private boolean selected; > >>> + > >>> + /** Legend icon */ > >>> + private Icon legendIcon; > >>> + > >>> + /** */ > >>> + private MapLayer layer; > >>> + > >>> + /** Flag to indicate if the legend icon have been loaded or not */ > >>> + private boolean loadedIcon; > >>> + > >>> + private int width; > >>> + private int height; > >>> + > >>> + /** > >>> + * @param name > >>> + * @param title > >>> + * @param urlLegend > >>> + * @param formatLegend > >>> + */ > >>> + public MapStyle( String name, String title, String urlLegend, > >> String formatLegend ) { > >>> + this.name = name; > >>> + this.title = title; > >>> + setUrlLegend(urlLegend); > >>> + this.formatLegend = formatLegend; > >>> + this.selected = false; > >>> + } > >>> + > >>> + public MapStyle( String name, String title, String urlLegend, > >> String formatLegend, int w, int h ) { > >>> + this.name = name; > >>> + this.title = title; > >>> + setUrlLegend(urlLegend); > >>> + this.formatLegend = formatLegend; > >>> + this.selected = false; > >>> + this.width = w; > >>> + this.height = h; > >>> + } > >>> + > >>> + /** > >>> + * @return > >>> + */ > >>> + public int getWidth() { > >>> + return width; > >>> + } > >>> + /** > >>> + * @return > >>> + */ > >>> + public int getHeight() { > >>> + return height; > >>> + } > >>> + > >>> + /** > >>> + * @return > >>> + */ > >>> + public String getName() { > >>> + return name; > >>> + } > >>> + > >>> + /** > >>> + * @param name > >>> + */ > >>> + public void setName( String name ) { > >>> + this.name = name; > >>> + } > >>> + > >>> + /** > >>> + * @return > >>> + */ > >>> + public String getTitle() { > >>> + return title; > >>> + } > >>> + > >>> + /** > >>> + * @param title > >>> + */ > >>> + public void setTitle( String title ) { > >>> + this.title = title; > >>> + } > >>> + > >>> + /** > >>> + * @return > >>> + */ > >>> + public String getUrlLegend() { > >>> + return urlLegend; > >>> + } > >>> + > >>> + /** > >>> + * @param newURLLegend > >>> + */ > >>> + public void setUrlLegend( String newURLLegend ) { > >>> + this.urlLegend = newURLLegend; > >>> + } > >>> + > >>> + /** > >>> + * @return > >>> + */ > >>> + public String getFormatLegend() { > >>> + return formatLegend; > >>> + } > >>> + > >>> + /** > >>> + * @param formatLegend > >>> + */ > >>> + public void setFormatLegend( String formatLegend ) { > >>> + this.formatLegend = formatLegend; > >>> + } > >>> + > >>> + @Override > >>> + public String toString() { > >>> + return name; > >>> + } > >>> + > >>> + /** > >>> + * Load the legend icon at first request, not before > >>> + * > >>> + * @return > >>> + */ > >>> + public Icon getLegendIcon() { > >>> + if (!loadedIcon) { > >>> + loadIconFromLegendURL(); > >>> + } > >>> + return legendIcon; > >>> + } > >>> + > >>> + /** > >>> + * Loads the WMS style legend icon on request > >>> + */ > >>> + private void loadIconFromLegendURL() { > >>> + URL selectedUrl = null; > >>> + try { > >>> + selectedUrl = new URL(urlLegend); > >>> + } catch (MalformedURLException e) { > >>> + LOGGER.error(e.getMessage()); > >>> + } > >>> + > >>> + if (selectedUrl != null) { > >>> + BufferedImage image; > >>> + try { > >>> + image = ImageIO.read(selectedUrl); > >>> + legendIcon = new ImageIcon(image); > >>> + loadedIcon = true; > >>> + } catch (IOException e) { > >>> + LOGGER.error(e.getMessage()); > >>> + } > >>> + > >>> + } else { > >>> + loadedIcon = false; > >>> + } > >>> + } > >>> + > >>> + /** > >>> + * @return > >>> + */ > >>> + public boolean isSelected() { > >>> + return selected; > >>> + } > >>> + > >>> + /** > >>> + * @param selected > >>> + * @param check > >>> + */ > >>> + public void setSelected( boolean selected, boolean check ) { > >>> + if (check) { > >>> + if (this.selected && !selected && layer.getStyles().size() > >> == 1) > >>> + return; > >>> + if (this.selected && !selected) { > >>> + for( Iterator<MapStyle> iter = > >> layer.getStyles().iterator(); iter.hasNext(); ) { > >>> + MapStyle element = iter.next(); > >>> + if (!element.equals(this)) > >>> + element.setSelected(true, false); > >>> + > >>> + } > >>> + } > >>> + } > >>> + > >>> + this.selected = selected; > >>> + } > >>> + > >>> + /** > >>> + * > >>> + */ > >>> + public void fireStyleChanged() { > >>> + layer.setSelectedStyle(this); > >>> + } > >>> + > >>> + @Override > >>> + public boolean equals( Object other ) { > >>> + if (other == this) > >>> + return true; > >>> + if (!(other instanceof MapStyle)) > >>> + return false; > >>> + return getName().equals(((MapStyle) other).getName()); > >>> + } > >>> + > >>> + /** > >>> + * @param layer > >>> + */ > >>> + public void setLayer( MapLayer layer ) { > >>> + this.layer = layer; > >>> + } > >>> +} > >>> > >>> Modified: core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java > 2015-12-23 > >> 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -78,11 +78,13 @@ > >>> } > >>> > >>> > >>> + @Override > >>> protected Capabilities parseCapabilities(WMService service, > >> Document doc) throws IOException { > >>> String title = getTitle(doc); > >>> MapLayer topLayer = wmsLayerFromNode(XMLTools.simpleXPath(doc, > >> "WMT_MS_Capabilities/Capability/Layer")); > >>> LinkedList<String> formatList = getFormatList(doc); > >>> - return new Capabilities(service, title, topLayer, formatList); > >>> + > >>> + return new Capabilities(service, title, topLayer, formatList, > >>> + getInfoFormats(doc)); > >>> } > >>> > >>> > >>> @@ -90,4 +92,5 @@ > >>> return "SRS"; > >>> } > >>> > >>> + > >>> } > >>> > >>> Modified: core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java > 2015-12-23 > >> 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -84,8 +84,8 @@ > >>> MapLayer topLayer = wmsLayerFromNode(XMLTools.simpleXPath(doc, > >> "WMT_MS_Capabilities/Capability/Layer")); > >>> LinkedList<String> formatList = getFormatList(doc); > >>> String getMapURL = getMapURL(doc); > >>> - String getFeatureInfoURL = getFeatureInfoURL(doc); > >>> - return new Capabilities(service, title, topLayer, formatList, > >> getMapURL, getFeatureInfoURL ); > >>> + String featureInfoURL = getFeatureInfoURL(doc); > >>> + return new Capabilities(service, title, topLayer, formatList, > >>> + getInfoFormats(doc), getMapURL, featureInfoURL ); > >>> } > >>> > >>> > >>> > >>> Modified: core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java > 2015-12-23 > >> 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -85,7 +85,7 @@ > >>> LinkedList<String> formatList = getFormatList(doc); > >>> String getMapURL = getMapURL(doc); > >>> String getFeatureInfoURL = getFeatureInfoURL(doc); > >>> - return new Capabilities(service, title, topLayer, formatList, > >> getMapURL, getFeatureInfoURL ); > >>> + return new Capabilities(service, title, topLayer, formatList, > >>> + getInfoFormats(doc), getMapURL, getFeatureInfoURL ); > >>> } > >>> > >>> > >>> > >>> Modified: core/trunk/src/com/vividsolutions/wms/WMService.java > >>> =================================================================== > >>> --- core/trunk/src/com/vividsolutions/wms/WMService.java > 2015-12-23 > >> 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/com/vividsolutions/wms/WMService.java > 2015-12-23 > >> 16:26:41 UTC (rev 4663) > >>> @@ -215,16 +215,16 @@ > >>> * @return a MapRequest object which can be used to retrieve a map > >> image > >>> * from this service > >>> */ > >>> - public MapRequest createMapRequest() { > >>> - // [UT] 04.02.2005 changed > >>> - MapRequest mr = new MapRequest( this ); > >>> - mr.setVersion( this.wmsVersion ); > >>> - return mr; > >>> - } > >>> - > >>> - public String getVersion(){ > >>> - return wmsVersion; > >>> - } > >>> + public MapRequest createMapRequest() { > >>> + // [UT] 04.02.2005 changed > >>> + MapRequest mr = new MapRequest( this ); > >>> + mr.setVersion( this.wmsVersion ); > >>> + return mr; > >>> + } > >>> + > >>> + public String getVersion(){ > >>> + return wmsVersion; > >>> + } > >>> > >>> // > >>> // The WMService appends other parameters to the end of the URL @@ > >> -232,7 +232,7 @@ > >>> public static String legalize(String url) { > >>> String fixedURL = url.trim(); > >>> > >>> - if (fixedURL.indexOf("?") == -1) { > >>> + if (!fixedURL.contains("?")) { > >>> fixedURL = fixedURL + "?"; > >>> } else { > >>> if (fixedURL.endsWith("?")) { > >>> > >>> Modified: > >> core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java > >>> =================================================================== > >>> --- core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java > >> 2015-12-23 15:39:50 UTC (rev 4662) > >>> +++ core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java > >> 2015-12-23 16:26:41 UTC (rev 4663) > >>> @@ -22,6 +22,8 @@ > >>> import java.text.SimpleDateFormat; > >>> import java.util.*; > >>> import java.util.List; > >>> +import java.util.logging.Level; > >>> +import java.util.logging.Logger; > >>> import java.util.regex.Matcher; > >>> import java.util.regex.Pattern; > >>> > >>> @@ -901,9 +903,13 @@ > >>> // initialization for infoframe > >>> InfoFrame info = null; > >>> if(display.getState()) { > >>> - info = new > InfoFrame(context.getWorkbenchContext(), > >>> - (LayerManagerProxy)context, > >>> - > >> (TaskFrame)context.getWorkbenchFrame().getActiveInternalFrame()); > >>> + try { > >>> + info = new > >> InfoFrame(context.getWorkbenchContext(), > >>> + (LayerManagerProxy)context, > >>> + > >> (TaskFrame)context.getWorkbenchFrame().getActiveInternalFrame()); > >>> + } catch (IOException ex) { > >>> + ex.printStackTrace(); > >>> + } > >>> } > >>> > >>> // Loop on the requested layers > >>> > >>> > >>> > >> > ------------------------------------------------------------------------------ > >>> _______________________________________________ > >>> Jump-pilot-devel mailing list > >>> Jump-pilot-devel@lists.sourceforge.net > >>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >>> > >>> > >> > ------------------------------------------------------------------------------ > >>> _______________________________________________ > >>> Jump-pilot-devel mailing list > >>> Jump-pilot-devel@lists.sourceforge.net > >>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >>> > >> > >> > >> > ------------------------------------------------------------------------------ > >> _______________________________________________ > >> Jump-pilot-devel mailing list > >> Jump-pilot-devel@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >> > > > > > > > > > ------------------------------------------------------------------------------ > > > > > > > > _______________________________________________ > > Jump-pilot-devel mailing list > > Jump-pilot-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > Jump-pilot-devel mailing list > Jump-pilot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel >
------------------------------------------------------------------------------
_______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel