From: Michaël M. <m.m...@or...> - 2017-02-02 12:27:09
|
Hi Ede, There was much duplicated code. I think that Peppe improved the plugin by duplicating the old one to the newer org package and added his new stuff there. I'll send the small analyze I did before starting this cleaning so that Peppe can confirm. Michaël Le 02/02/2017 à 11:01, edg...@we... a écrit : > hey Mike, Peppe, > > can you explain why these two files >> core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSScaleStylePanel.java >> core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSStylePlugIn.java > were deleted? the commit message does not mention it. > > just curious ..ede > > On 02.02.2017 07:30, jum...@li... wrote: >> Revision: 5345 >> http://sourceforge.net/p/jump-pilot/code/5345 >> Author: michaudm >> Date: 2017-02-02 06:30:57 +0000 (Thu, 02 Feb 2017) >> Log Message: >> ----------- >> fix #453 about closing ChangeRasterStyle dialog (related to #433) >> >> Modified Paths: >> -------------- >> core/trunk/ChangeLog >> core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/AddWMSQueryPlugIn.java >> core/trunk/src/org/openjump/core/ui/plugin/wms/ZoomToWMSLayerPlugIn.java >> >> Removed Paths: >> ------------- >> core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSScaleStylePanel.java >> core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSStylePlugIn.java >> >> Modified: core/trunk/ChangeLog >> =================================================================== >> --- core/trunk/ChangeLog 2017-01-29 13:14:19 UTC (rev 5344) >> +++ core/trunk/ChangeLog 2017-02-02 06:30:57 UTC (rev 5345) >> @@ -3,6 +3,9 @@ >> # 2. make sure that lines break at 80 chars for constricted display situations >> #<-------------------------------- 80 chars ----------------------------------># >> >> +2017-02-02 mmichaud <m.m...@or...> >> + * Restore ZoomToWMSPlugIn capabilities in more recent ZoomToWMSLayerPlugIn >> + >> * release 1.10 Changes.txt updated until here*********************************** >> >> 2017-01-27 mmichaud <m.m...@or...> >> >> Modified: core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/AddWMSQueryPlugIn.java >> =================================================================== >> --- core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/AddWMSQueryPlugIn.java 2017-01-29 13:14:19 UTC (rev 5344) >> +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/AddWMSQueryPlugIn.java 2017-02-02 06:30:57 UTC (rev 5345) >> @@ -36,7 +36,9 @@ >> >> import com.vividsolutions.jump.workbench.plugin.PlugInContext; >> >> - >> +/** >> + * This plugin has been deactivated in favor of AddWmsLayerWizard >> + */ >> public class AddWMSQueryPlugIn extends AbstractWizardPlugin { >> public void initialize(PlugInContext context) throws Exception { >> super.initialize(context); >> >> Deleted: core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSScaleStylePanel.java >> =================================================================== >> --- core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSScaleStylePanel.java 2017-01-29 13:14:19 UTC (rev 5344) >> +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSScaleStylePanel.java 2017-02-02 06:30:57 UTC (rev 5345) >> @@ -1,532 +0,0 @@ >> -package com.vividsolutions.jump.workbench.ui.plugin.wms; >> - >> -import java.awt.Color; >> -import java.awt.GridBagConstraints; >> -import java.awt.GridBagLayout; >> -import java.awt.Insets; >> -import java.text.DecimalFormat; >> - >> -import javax.swing.ImageIcon; >> -import javax.swing.JButton; >> -import javax.swing.JCheckBox; >> -import javax.swing.JLabel; >> -import javax.swing.JPanel; >> -import javax.swing.JTextField; >> -import javax.swing.SwingConstants; >> - >> -import org.openjump.core.ui.util.ScreenScale; >> - >> -import com.vividsolutions.jump.I18N; >> -import com.vividsolutions.jump.util.MathUtil; >> -import com.vividsolutions.jump.workbench.model.WMSLayer; >> -import com.vividsolutions.jump.workbench.ui.GUIUtil; >> -import com.vividsolutions.jump.workbench.ui.LayerViewPanel; >> -import com.vividsolutions.jump.workbench.ui.ValidatingTextField; >> -import com.vividsolutions.jump.workbench.ui.images.IconLoader; >> -import com.vividsolutions.jump.workbench.ui.style.StylePanel; >> - >> -/** >> - * @version $Rev: 4221 $ Dic 23 2014 Giuseppe Aruta Panel that allows to set >> - * Scale display of a Sextante Raster Layer Panel Refractor from >> - * AdbToolBox version ver 1.0 2014_02_10 >> - * >> - * >> - */ >> -public class WMSScaleStylePanel extends JPanel implements StylePanel { >> - >> - /** >> - * >> - */ >> - private static final long serialVersionUID = 1L; >> - private static final ImageIcon MAX_SCALE_ICON = GUIUtil.toSmallIcon(IconLoader.icon("Atom.gif")); >> - private static final ImageIcon MIN_SCALE_ICON = GUIUtil.toSmallIcon(IconLoader >> - .icon("globe3_32.png")); >> - private JCheckBox enableScaleDependentRenderingCheckBox = null; >> - private JLabel smallestScaleLabel = null; >> - private JLabel largestScaleLabel = null; >> - private JLabel smallestScale1Label = null; >> - private JLabel largestScale1Label = null; >> - private JLabel currentScale1Label = null; >> - private ValidatingTextField smallestScaleTextField = null; >> - private ValidatingTextField largestScaleTextField = null; >> - private ValidatingTextField currentScaleTextField = null; >> - private WMSLayer layer; >> - private LayerViewPanel panel; >> - private JLabel currentScaleLabel = null; >> - private JPanel fillerPanel = null; >> - private JPanel spacerPanelInTopLeftCorner = null; >> - private JLabel unitsPerPixelLabel = null; >> - private JButton hideAboveCurrentScaleButton = null; >> - private JButton hideBelowCurrentScaleButton = null; >> - private static final Color TEXT_FIELD_BACKGROUND_COLOUR = new JTextField() >> - .getBackground(); >> - private JLabel smallestScaleIconLabel = null; >> - private JLabel largestScaleIconLabel = null; >> - private JPanel spacerPanelBelowCurrentScale = null; >> - private JButton showAtThisScaleButton = null; >> - // Add space label >> - private JLabel SpaceLabel = null; >> - >> - private double scaleFactor = 0; >> - >> - private JPanel getFillerPanel() { >> - if (fillerPanel == null) { >> - fillerPanel = new JPanel(); >> - } >> - return fillerPanel; >> - } >> - >> - public WMSScaleStylePanel(WMSLayer layer, LayerViewPanel panel) { >> - super(); >> - initialize(); >> - this.layer = layer; >> - this.panel = panel; >> - // panel.setSize(500, 550); >> - panel.setName(getTitle()); >> - double internalScale = this.currentScale(); >> - double realScale = ScreenScale.getHorizontalMapScale(panel >> - .getViewport()); >> - this.scaleFactor = internalScale / realScale; >> - >> - Double internalMinScale = layer.getMinScale(); >> - Double realMinScale = null; >> - if (internalMinScale != null) { >> - realMinScale = new Double(Math.floor(internalMinScale.doubleValue() >> - / this.scaleFactor)); >> - } >> - >> - Double internalMaxScale = layer.getMaxScale(); >> - Double realMaxScale = null; >> - if (internalMaxScale != null) { >> - realMaxScale = new Double(Math.floor(internalMaxScale.doubleValue() >> - / this.scaleFactor)); >> - } >> - smallestScaleTextField.setText(formatScaleLosslessly(realMinScale)); >> - largestScaleTextField.setText(formatScaleLosslessly(realMaxScale)); >> - currentScaleTextField.setText(formatScaleLossily(realScale)); >> - enableScaleDependentRenderingCheckBox.setSelected(layer >> - .isScaleDependentRenderingEnabled()); >> - updateComponents(); >> - } >> - >> - protected double currentScale() { >> - return 1d / panel.getViewport().getScale(); >> - } >> - >> - private String formatScaleLosslessly(Double scale) { >> - return scale != null ? formatScaleLosslessly(scale.doubleValue()) : ""; >> - } >> - >> - private String formatScaleLosslessly(double scale) { >> - return scale == (int) scale ? "" + (int) scale : "" + scale; >> - } >> - >> - private void initialize() { >> - GridBagConstraints gridBagConstraints21 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints18 = new GridBagConstraints(); >> - smallestScaleIconLabel = new JLabel(); >> - largestScaleIconLabel = new JLabel(); >> - unitsPerPixelLabel = new JLabel(); >> - // Add space label >> - SpaceLabel = new JLabel(); >> - GridBagConstraints gridBagConstraints15 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints14 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints12 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); >> - largestScaleLabel = new JLabel(); >> - smallestScaleLabel = new JLabel(); >> - largestScale1Label = new JLabel(); >> - currentScale1Label = new JLabel(); >> - smallestScale1Label = new JLabel(); >> - currentScaleLabel = new JLabel(); >> - GridBagConstraints gridBagConstraints9 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints7 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints17 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints31 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints13 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints6 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints16 = new GridBagConstraints(); >> - GridBagConstraints gridBagConstraints10 = new GridBagConstraints(); >> - // To add space at the end of the last option >> - GridBagConstraints gridBagConstraintsSpace = new GridBagConstraints(); >> - this.setLayout(new GridBagLayout()); >> - gridBagConstraints1.gridx = 1; >> - gridBagConstraints1.gridy = 4; >> - smallestScaleLabel.setText(I18N >> - .get("ui.style.ScaleStylePanel.smallest-scale")); >> - smallestScaleLabel.setToolTipText(I18N >> - .get("ui.style.ScaleStylePanel.larger-units-pixel")); >> - smallestScaleIconLabel.setIcon(MIN_SCALE_ICON); >> - largestScaleIconLabel.setIcon(MAX_SCALE_ICON); >> - gridBagConstraints5.gridx = 3; >> - gridBagConstraints5.gridy = 6; >> - smallestScale1Label.setText("1:"); >> - currentScaleLabel.setText(I18N >> - .get("ui.style.ScaleStylePanel.current-scale")); >> - gridBagConstraints6.gridx = 3; >> - gridBagConstraints6.gridy = 8; >> - gridBagConstraints16.gridx = 3; >> - gridBagConstraints16.gridy = 2; >> - largestScale1Label.setText("1:"); >> - currentScale1Label.setText("1:"); >> - gridBagConstraints7.gridx = 4; >> - gridBagConstraints7.gridy = 6; >> - gridBagConstraints7.fill = java.awt.GridBagConstraints.HORIZONTAL; >> - gridBagConstraints7.insets = new java.awt.Insets(0, 2, 0, 0); >> - gridBagConstraints17.gridx = 4; >> - gridBagConstraints17.gridy = 2; >> - gridBagConstraints17.fill = java.awt.GridBagConstraints.HORIZONTAL; >> - gridBagConstraints17.insets = new java.awt.Insets(0, 2, 0, 0); >> - gridBagConstraints9.gridx = 4; >> - gridBagConstraints9.gridy = 8; >> - gridBagConstraints9.fill = java.awt.GridBagConstraints.HORIZONTAL; >> - gridBagConstraints9.insets = new java.awt.Insets(0, 2, 0, 0); >> - gridBagConstraints1.gridwidth = 5; >> - gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST; >> - gridBagConstraints3.anchor = java.awt.GridBagConstraints.WEST; >> - gridBagConstraints3.insets = new java.awt.Insets(5, 5, 5, 0); >> - gridBagConstraints4.anchor = java.awt.GridBagConstraints.WEST; >> - gridBagConstraints4.insets = new java.awt.Insets(5, 5, 5, 0); >> - gridBagConstraints5.insets = new java.awt.Insets(0, 10, 0, 0); >> - gridBagConstraints6.insets = new java.awt.Insets(0, 10, 0, 0); >> - gridBagConstraints16.insets = new java.awt.Insets(0, 10, 0, 0); >> - gridBagConstraints16.anchor = java.awt.GridBagConstraints.WEST; >> - gridBagConstraints10.gridx = 2; >> - gridBagConstraints10.gridy = 2; >> - gridBagConstraints10.anchor = java.awt.GridBagConstraints.WEST; >> - gridBagConstraints10.insets = new java.awt.Insets(0, 5, 0, 0); >> - gridBagConstraints10.gridwidth = 1; >> - gridBagConstraints3.gridx = 2; >> - gridBagConstraints3.gridy = 6; >> - gridBagConstraints4.gridx = 2; >> - gridBagConstraints4.gridy = 8; >> - gridBagConstraints11.gridx = 7; >> - gridBagConstraints11.gridy = 16; >> - gridBagConstraints11.fill = java.awt.GridBagConstraints.BOTH; >> - gridBagConstraints11.weightx = 1.0D; >> - gridBagConstraints11.weighty = 1.0D; >> - gridBagConstraints12.gridx = 0; >> - gridBagConstraints12.gridy = 0; >> - gridBagConstraints12.insets = new java.awt.Insets(2, 2, 2, 2); >> - gridBagConstraints13.gridx = 4; >> - gridBagConstraints13.gridy = 5; >> - unitsPerPixelLabel.setText(I18N >> - .get("ui.style.ScaleStylePanel.units-pixel")); >> - gridBagConstraints14.gridx = 7; >> - gridBagConstraints14.gridy = 6; >> - gridBagConstraints14.insets = new java.awt.Insets(4, 4, 4, 4); >> - gridBagConstraints14.fill = java.awt.GridBagConstraints.HORIZONTAL; >> - gridBagConstraints15.gridx = 7; >> - gridBagConstraints15.gridy = 8; >> - gridBagConstraints15.insets = new java.awt.Insets(4, 4, 4, 4); >> - gridBagConstraints15.fill = java.awt.GridBagConstraints.HORIZONTAL; >> - getShowAtThisScaleButton().setMargin(new Insets(0, 0, 0, 0)); >> - getHideAboveCurrentScaleButton().setMargin(new Insets(0, 0, 0, 0)); >> - getHideBelowCurrentScaleButton().setMargin(new Insets(0, 0, 0, 0)); >> - getShowAtThisScaleButton().setMargin(new Insets(0, 0, 0, 0)); >> - GUIUtil.shrinkFont(getHideAboveCurrentScaleButton()); >> - GUIUtil.shrinkFont(getHideBelowCurrentScaleButton()); >> - GUIUtil.shrinkFont(getShowAtThisScaleButton()); >> - GUIUtil.shrinkFont(unitsPerPixelLabel); >> - largestScaleLabel.setText(I18N >> - .get("ui.style.ScaleStylePanel.largest-scale")); >> - largestScaleLabel.setToolTipText(I18N >> - .get("ui.style.ScaleStylePanel.smaller-units-pixel")); >> - gridBagConstraints2.gridx = 1; >> - gridBagConstraints2.gridy = 6; >> - gridBagConstraints31.gridx = 1; >> - gridBagConstraints31.gridy = 8; >> - gridBagConstraints2.insets = new java.awt.Insets(5, 40, 5, 0); >> - gridBagConstraints31.insets = new java.awt.Insets(5, 40, 5, 0); >> - gridBagConstraints18.gridx = 2; >> - gridBagConstraints18.gridy = 3; >> - gridBagConstraints21.gridx = 7; >> - gridBagConstraints21.gridy = 2; >> - >> - gridBagConstraints21.fill = java.awt.GridBagConstraints.HORIZONTAL; >> - gridBagConstraints21.insets = new java.awt.Insets(4, 4, 4, 4); >> - this.add(getSpacerPanelInTopLeftCorner(), gridBagConstraints12); >> - this.add(getShowAtThisScaleButton(), gridBagConstraints21); >> - this.add(getEnableScaleDependentRenderingCheckBox(), >> - gridBagConstraints1); >> - this.add(currentScaleLabel, gridBagConstraints10); >> - this.add(smallestScaleLabel, gridBagConstraints3); >> - this.add(largestScaleLabel, gridBagConstraints4); >> - this.add(getFillerPanel(), gridBagConstraints11); >> - this.add(smallestScale1Label, gridBagConstraints5); >> - this.add(largestScale1Label, gridBagConstraints6); >> - this.add(unitsPerPixelLabel, gridBagConstraints13); >> - this.add(getHideAboveCurrentScaleButton(), gridBagConstraints14); >> - this.add(getHideBelowCurrentScaleButton(), gridBagConstraints15); >> - this.add(currentScale1Label, gridBagConstraints16); >> - this.add(smallestScaleIconLabel, gridBagConstraints2); >> - this.add(largestScaleIconLabel, gridBagConstraints31); >> - this.add(SpaceLabel, gridBagConstraintsSpace); >> - this.add(getSpacerPanelBelowCurrentScale(), gridBagConstraints18); >> - this.add(getSmallestScaleTextField(), gridBagConstraints7); >> - this.add(getLargestScaleTextField(), gridBagConstraints9); >> - this.add(getCurrentScaleTextField(), gridBagConstraints17); >> - >> - } >> - >> - public String getTitle() { >> - return I18N.get("ui.style.ScaleStylePanel.scale"); >> - } >> - >> - public void updateStyles() { >> - layer.setMinScale(getSmallestScale()); >> - layer.setMaxScale(getLargestScale()); >> - layer.setScaleDependentRenderingEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - layer.fireAppearanceChanged(); >> - } >> - >> - public String validateInput() { >> - if (getSmallestScale() != null >> - && getLargestScale() != null >> - && getLargestScale().doubleValue() > getSmallestScale() >> - .doubleValue()) { >> - return I18N >> - .get("ui.style.ScaleStylePanel.units-pixel-at-smallest-scale-must-be-larger-than-units-pixel-at-largest-scale"); >> - } >> - if (getLargestScale() != null && getLargestScale().doubleValue() == 0) { >> - return I18N >> - .get("ui.style.ScaleStylePanel.units-pixel-at-largest-scale-must-be-greater-than-0"); >> - } >> - if (getSmallestScale() != null && getSmallestScale().doubleValue() == 0) { >> - return I18N >> - .get("ui.style.ScaleStylePanel.units-pixel-at-smallest-scale-must-be-greater-than-0"); >> - } >> - return null; >> - } >> - >> - private Double getLargestScale() { >> - return largestScaleTextField.getText().trim().length() > 0 ? new Double( >> - largestScaleTextField.getDouble() * this.scaleFactor) : null; >> - } >> - >> - private Double getSmallestScale() { >> - return smallestScaleTextField.getText().trim().length() > 0 ? new Double( >> - smallestScaleTextField.getDouble() * this.scaleFactor) : null; >> - } >> - >> - private JCheckBox getEnableScaleDependentRenderingCheckBox() { >> - if (enableScaleDependentRenderingCheckBox == null) { >> - enableScaleDependentRenderingCheckBox = new JCheckBox(); >> - enableScaleDependentRenderingCheckBox >> - .setText(I18N >> - .get("ui.style.ScaleStylePanel.only-show-layer-when-scale-is-between")); >> - enableScaleDependentRenderingCheckBox >> - .addActionListener(new java.awt.event.ActionListener() { >> - >> - public void actionPerformed(java.awt.event.ActionEvent e) { >> - updateComponents(); >> - } >> - }); >> - } >> - return enableScaleDependentRenderingCheckBox; >> - } >> - >> - private void updateComponents() { >> - smallestScaleTextField >> - .setBackground(enableScaleDependentRenderingCheckBox >> - .isSelected() ? TEXT_FIELD_BACKGROUND_COLOUR >> - : getBackground()); >> - largestScaleTextField >> - .setBackground(enableScaleDependentRenderingCheckBox >> - .isSelected() ? TEXT_FIELD_BACKGROUND_COLOUR >> - : getBackground()); >> - unitsPerPixelLabel.setEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - hideAboveCurrentScaleButton >> - .setEnabled(enableScaleDependentRenderingCheckBox.isSelected()); >> - smallestScaleLabel.setEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - smallestScale1Label.setEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - smallestScaleTextField.setEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - hideBelowCurrentScaleButton >> - .setEnabled(enableScaleDependentRenderingCheckBox.isSelected()); >> - largestScaleLabel.setEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - largestScale1Label.setEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - largestScaleTextField.setEnabled(enableScaleDependentRenderingCheckBox >> - .isSelected()); >> - } >> - >> - private ValidatingTextField getSmallestScaleTextField() { >> - if (smallestScaleTextField == null) { >> - smallestScaleTextField = createValidatingTextField(); >> - } >> - return smallestScaleTextField; >> - } >> - >> - private ValidatingTextField getLargestScaleTextField() { >> - if (largestScaleTextField == null) { >> - largestScaleTextField = createValidatingTextField(); >> - } >> - return largestScaleTextField; >> - } >> - >> - private ValidatingTextField getCurrentScaleTextField() { >> - if (currentScaleTextField == null) { >> - currentScaleTextField = createValidatingTextField(); >> - currentScaleTextField.setEditable(false); >> - currentScaleTextField.setBackground(getBackground()); >> - } >> - return currentScaleTextField; >> - } >> - >> - private ValidatingTextField createValidatingTextField() { >> - return new ValidatingTextField( >> - "", >> - 7, >> - SwingConstants.LEFT, >> - new ValidatingTextField.CompositeValidator( >> - new ValidatingTextField.Validator[] { >> - ValidatingTextField.DOUBLE_VALIDATOR, >> - new ValidatingTextField.GreaterThanOrEqualValidator( >> - 0) }), >> - ValidatingTextField.DUMMY_CLEANER); >> - } >> - >> - /** >> - * Nicer formatting, but the expense of possibly losing precision. >> - */ >> - private String formatScaleLossily(double x) { >> - if (1 <= x && x <= 1E6) { >> - return new DecimalFormat("#").format(x); >> - } >> - if (1E-6 <= x && x <= 1) { >> - return new DecimalFormat("0.000000").format(x); >> - } >> - return new DecimalFormat("0.#E0").format(x); >> - } >> - >> - /** >> - * This method initializes spacerPanel >> - * >> - * @return javax.swing.JPanel >> - */ >> - private JPanel getSpacerPanelInTopLeftCorner() { >> - if (spacerPanelInTopLeftCorner == null) { >> - spacerPanelInTopLeftCorner = new JPanel(); >> - spacerPanelInTopLeftCorner.setLayout(new GridBagLayout()); >> - } >> - return spacerPanelInTopLeftCorner; >> - } >> - >> - private JButton getHideAboveCurrentScaleButton() { >> - if (hideAboveCurrentScaleButton == null) { >> - hideAboveCurrentScaleButton = new JButton(); >> - hideAboveCurrentScaleButton.setText(I18N >> - .get("ui.style.ScaleStylePanel.hide-above-current-scale")); >> - hideAboveCurrentScaleButton >> - .addActionListener(new java.awt.event.ActionListener() { >> - >> - public void actionPerformed(java.awt.event.ActionEvent e) { >> - double realScale = 1 / scaleFactor * currentScale(); >> - smallestScaleTextField >> - .setText(formatScaleLossily(roundFirstSignificantFigureUp(realScale))); >> - } >> - }); >> - } >> - return hideAboveCurrentScaleButton; >> - } >> - >> - /** >> - * Round the first significant figure up >> - */ >> - private double roundFirstSignificantFigureUp(double x) { >> - return roundFirstSignificantFigure(x, 1); >> - } >> - >> - /** >> - * Round the first significant figure down >> - */ >> - private double roundFirstSignificantFigureDown(double x) { >> - return roundFirstSignificantFigure(x, 0); >> - } >> - >> - private static double roundFirstSignificantFigure(double x, int i) { >> - double scale = Math.pow(10, Math.floor(MathUtil.base10Log(x))); >> - int firstSignificantFigure = (int) Math.floor(x / scale); >> - return (firstSignificantFigure + i) * scale; >> - } >> - >> - private JButton getHideBelowCurrentScaleButton() { >> - if (hideBelowCurrentScaleButton == null) { >> - hideBelowCurrentScaleButton = new JButton(); >> - hideBelowCurrentScaleButton.setText(I18N >> - .get("ui.style.ScaleStylePanel.hide-below-current-scale")); >> - hideBelowCurrentScaleButton >> - .addActionListener(new java.awt.event.ActionListener() { >> - >> - public void actionPerformed(java.awt.event.ActionEvent e) { >> - // [sstein] changed to show real scale instead >> - // currentScale >> - double realScale = 1 / scaleFactor * currentScale(); >> - largestScaleTextField >> - .setText(formatScaleLossily(roundFirstSignificantFigureDown(realScale))); >> - } >> - }); >> - } >> - return hideBelowCurrentScaleButton; >> - } >> - >> - /** >> - * This method initializes jPanel >> - * >> - * @return javax.swing.JPanel >> - */ >> - private JPanel getSpacerPanelBelowCurrentScale() { >> - if (spacerPanelBelowCurrentScale == null) { >> - spacerPanelBelowCurrentScale = new JPanel(); >> - spacerPanelBelowCurrentScale.setLayout(new GridBagLayout()); >> - spacerPanelBelowCurrentScale >> - .setPreferredSize(new java.awt.Dimension(0, 20)); >> - } >> - return spacerPanelBelowCurrentScale; >> - } >> - >> - /** >> - * This method initializes showAtThisScaleButton >> - * >> - * @return javax.swing.JButton >> - */ >> - private JButton getShowAtThisScaleButton() { >> - if (showAtThisScaleButton == null) { >> - showAtThisScaleButton = new JButton(); >> - showAtThisScaleButton.setText(I18N >> - .get("ui.style.ScaleStylePanel.show-at-this-scale")); >> - showAtThisScaleButton >> - .addActionListener(new java.awt.event.ActionListener() { >> - >> - public void actionPerformed(java.awt.event.ActionEvent e) { >> - if (!enableScaleDependentRenderingCheckBox >> - .isSelected()) { >> - enableScaleDependentRenderingCheckBox.doClick(); >> - } >> - if (getSmallestScale() != null >> - && currentScale() > getSmallestScale() >> - .doubleValue()) { >> - getHideAboveCurrentScaleButton().doClick(); >> - } >> - if (getLargestScale() != null >> - && currentScale() < getLargestScale() >> - .doubleValue()) { >> - getHideBelowCurrentScaleButton().doClick(); >> - } >> - } >> - }); >> - } >> - return showAtThisScaleButton; >> - } >> -} >> >> Deleted: core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSStylePlugIn.java >> =================================================================== >> --- core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSStylePlugIn.java 2017-01-29 13:14:19 UTC (rev 5344) >> +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/wms/WMSStylePlugIn.java 2017-02-02 06:30:57 UTC (rev 5345) >> @@ -1,102 +0,0 @@ >> -/* >> - * The Unified Mapping Platform (JUMP) is an extensible, interactive GUI >> - * for visualizing and manipulating spatial features with geometry and attributes. >> - * >> - * Copyright (C) 2003 Vivid Solutions >> - * >> - * 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 2 >> - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. >> - * >> - * For more information, contact: >> - * >> - * Vivid Solutions >> - * Suite #1A >> - * 2328 Government Street >> - * Victoria BC V8T 5G5 >> - * Canada >> - * >> - * (250)385-6040 >> - * www.vividsolutions.com >> - */ >> -package com.vividsolutions.jump.workbench.ui.plugin.wms; >> - >> -import javax.swing.ImageIcon; >> -import javax.swing.JTabbedPane; >> - >> -import org.openjump.core.apitools.LayerTools; >> - >> -import com.vividsolutions.jump.I18N; >> -import com.vividsolutions.jump.workbench.WorkbenchContext; >> -import com.vividsolutions.jump.workbench.model.WMSLayer; >> -import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; >> -import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory; >> -import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck; >> -import com.vividsolutions.jump.workbench.plugin.PlugInContext; >> -import com.vividsolutions.jump.workbench.ui.MultiInputDialog; >> -import com.vividsolutions.jump.workbench.ui.images.IconLoader; >> - >> -public class WMSStylePlugIn extends AbstractPlugIn { >> - >> - public WMSStylePlugIn() { >> - } >> - >> - public boolean execute(PlugInContext context) throws Exception { >> - final WMSLayer layer = (WMSLayer) LayerTools.getSelectedLayerable( >> - context, WMSLayer.class); >> - MultiInputDialog dialog = new MultiInputDialog( >> - context.getWorkbenchFrame(), >> - I18N.get("ui.style.ChangeStylesPlugIn.change-styles"), true); >> - dialog.setInset(0); >> - dialog.setSideBarImage(IconLoader.icon("Symbology.gif")); >> - dialog.setSideBarDescription(getName()); >> - >> - final WMSScaleStylePanel panel = new WMSScaleStylePanel(layer, >> - context.getLayerViewPanel()); >> - JTabbedPane tabbedPane = new JTabbedPane(); >> - tabbedPane.add(I18N.get("ui.style.ChangeStylesPlugIn.change-styles"), >> - panel); >> - dialog.addRow(tabbedPane); >> - >> - dialog.setVisible(true); >> - dialog.setApplyVisible(true); >> - if (dialog.wasOKPressed()) { >> - panel.updateStyles(); >> - return true; >> - } >> - >> - return false; >> - } >> - >> - public ImageIcon getIcon() { >> - return IconLoader.icon("Palette.png"); >> - } >> - >> - public String getName() { >> - return I18N.get("ui.style.ChangeStylesPlugIn.change-styles"); >> - } >> - >> - public MultiEnableCheck createEnableCheck( >> - final WorkbenchContext workbenchContext) { >> - EnableCheckFactory checkFactory = new EnableCheckFactory( >> - workbenchContext); >> - >> - return new MultiEnableCheck() >> - .add(checkFactory >> - .createWindowWithLayerNamePanelMustBeActiveCheck()) >> - .add(checkFactory >> - .createWindowWithLayerViewPanelMustBeActiveCheck()) >> - .add(checkFactory.createExactlyNLayerablesMustBeSelectedCheck( >> - 1, WMSLayer.class)); >> - } >> -} >> >> Modified: core/trunk/src/org/openjump/core/ui/plugin/wms/ZoomToWMSLayerPlugIn.java >> =================================================================== >> --- core/trunk/src/org/openjump/core/ui/plugin/wms/ZoomToWMSLayerPlugIn.java 2017-01-29 13:14:19 UTC (rev 5344) >> +++ core/trunk/src/org/openjump/core/ui/plugin/wms/ZoomToWMSLayerPlugIn.java 2017-02-02 06:30:57 UTC (rev 5345) >> @@ -1,14 +1,21 @@ >> package org.openjump.core.ui.plugin.wms; >> >> -import java.util.Iterator; >> +import java.awt.event.ActionEvent; >> +import java.awt.event.ActionListener; >> +import java.awt.event.MouseAdapter; >> +import java.awt.event.MouseEvent; >> +import java.util.*; >> >> -import javax.swing.ImageIcon; >> +import javax.swing.*; >> +import javax.swing.table.AbstractTableModel; >> +import javax.swing.table.JTableHeader; >> +import javax.swing.table.TableColumn; >> +import javax.swing.table.TableColumnModel; >> >> +import com.vividsolutions.jts.geom.Coordinate; >> import com.vividsolutions.jts.geom.Envelope; >> import com.vividsolutions.jump.I18N; >> -import com.vividsolutions.jump.geom.EnvelopeUtil; >> import com.vividsolutions.jump.workbench.Logger; >> -import com.vividsolutions.jump.workbench.WorkbenchContext; >> import com.vividsolutions.jump.workbench.model.WMSLayer; >> import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; >> import com.vividsolutions.jump.workbench.plugin.EnableCheck; >> @@ -17,20 +24,15 @@ >> import com.vividsolutions.jump.workbench.plugin.PlugInContext; >> import com.vividsolutions.jump.workbench.ui.MenuNames; >> import com.vividsolutions.jump.workbench.ui.images.IconLoader; >> +import com.vividsolutions.wms.BoundingBox; >> +import com.vividsolutions.wms.Capabilities; >> +import com.vividsolutions.wms.MapLayer; >> +import com.vividsolutions.wms.WMService; >> >> >> - >> public class ZoomToWMSLayerPlugIn extends AbstractPlugIn { >> - >> >> - >> - PlugInContext context; >> - >> - //final WorkbenchContext wbcontext = null; >> - >> public void initialize( PlugInContext context ) throws Exception { >> - this.context = context; >> - final WorkbenchContext wbcontext = context.getWorkbenchContext(); >> EnableCheckFactory enableCheckFactory = new EnableCheckFactory( context >> .getWorkbenchContext() ); >> >> @@ -40,11 +42,11 @@ >> .add(enableCheckFactory.createWindowWithLayerManagerMustBeActiveCheck()); >> >> context.getFeatureInstaller() >> - .addMainMenuItem( this, new String[] { MenuNames.VIEW }, >> + .addMainMenuPlugin( this, new String[] { MenuNames.VIEW }, >> I18N.get( "org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.zoom-to-wms-layer" ) >> + "{pos:9}", false, null, enableCheck ); >> // Add PlugIn to WMSPopupMenu >> - context.getFeatureInstaller().addPopupMenuItem( >> + context.getFeatureInstaller().addPopupMenuPlugin( >> context.getWorkbenchFrame().getWMSLayerNamePopupMenu(), this, >> I18N.get( "org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.zoom-to-wms-layer" ), false, >> null, enableCheck ); >> @@ -53,27 +55,636 @@ >> >> >> public boolean execute( PlugInContext context ) throws Exception { >> - this.context = context; >> - boolean isSIDLayer = false; >> - final WorkbenchContext wbcontext = context.getWorkbenchContext(); >> Envelope envelope = new Envelope(); >> - String srs = null; >> - for (Iterator i = wbcontext.getLayerNamePanel().selectedNodes(WMSLayer.class).iterator(); i.hasNext();) { >> - WMSLayer layer = (WMSLayer) i.next(); >> - envelope.expandToInclude(layer.getEnvelope()); >> - srs = layer.getSRS(); >> - } >> - if (envelope.getWidth() == 0.0 && envelope.getHeight() == 0.0) { >> - context.getWorkbenchFrame().warnUser("No Bounding Box Available for " + srs); >> + //String srs = null; >> + //for (Object o : context.getLayerableNamePanel().selectedNodes(WMSLayer.class)) { >> + // WMSLayer layer = (WMSLayer)o; >> + // envelope.expandToInclude(layer.getEnvelope()); >> + // srs = layer.getSRS(); >> + //} >> + //if (envelope.getWidth() == 0.0 && envelope.getHeight() == 0.0) { >> + // context.getWorkbenchFrame().warnUser("No Bounding Box Available for " + srs); >> + // return false; >> + //} >> + >> + List<MapLayer> mapLayerOfChoosenLayers = getMapLayerOfChoosenLayers( context ); >> + if (mapLayerOfChoosenLayers.size() == 0) { >> return false; >> } >> - Logger.info("Zoom to " + wbcontext.getLayerNamePanel().selectedNodes(WMSLayer.class) + " : " + envelope); >> - context.getLayerViewPanel().getViewport().zoom(EnvelopeUtil.bufferByFraction(envelope, 0.03)); >> + String selectedSRS = getSelectedSRS( context ); >> + Map<String,BoundingBox> boundingBoxesForSRS = >> + getBoundingBoxesForSRS( mapLayerOfChoosenLayers, selectedSRS ); >> + zoomToBoundingBox( context, boundingBoxesForSRS, selectedSRS ); >> + >> + //Logger.info("Zoom to " + context.getLayerableNamePanel().selectedNodes(WMSLayer.class) + " : " + envelope); >> + //context.getLayerViewPanel().getViewport().zoom(EnvelopeUtil.bufferByFraction(envelope, 0.03)); >> return true; >> } >> >> public String getName() { >> - return I18N.get("org.openjump.core.ui.plugin.wms.ZoomToWMSLayerPlugIn.zoom-to-wms-layer"); >> + return I18N.get("org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.zoom-to-wms-layer"); >> } >> + >> public static final ImageIcon ICON = IconLoader.icon("zoom.gif"); >> + >> + // Retrieve MapLayer(s) from OpenJUMP's WMSLayer >> + private List<MapLayer> getMapLayerOfChoosenLayers( PlugInContext context ) throws Exception { >> + List<MapLayer> mapLayerOfChoosenLayers = new ArrayList<MapLayer>(); >> + >> + // Choosen Layers >> + WMSLayer[] selectedWmsLayers = getSelectedWMSLayer( context ); >> + >> + if ( selectedWmsLayers.length == 0 ) { >> + JOptionPane.showMessageDialog( context.getWorkbenchFrame(), I18N >> + .get( "org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.no-wms-layer-selected" ) ); >> + return mapLayerOfChoosenLayers; >> + } >> + >> + Set<MapLayer> allLayers = this.getAllMapLayer( context ); >> + >> + // Filter choosen Layer >> + // [mmichaud] search is based on layer's name : if layer's name has been changed >> + // by the user for any reason, it does not work any more >> + for (WMSLayer selectedLayer : selectedWmsLayers) { >> + String name = selectedLayer.getName().replaceAll(" \\(\\d+\\)$",""); >> + for (MapLayer mapLayer : allLayers) { >> + String mapLayerTitle = mapLayer.getTitle(); >> + String mapLayerName = mapLayer.getName(); >> + if (mapLayerTitle != null && mapLayerName != null) { >> + if (mapLayerTitle.contains(name) || mapLayerName.contains(name)) >> + mapLayerOfChoosenLayers.add(mapLayer); >> + } else if (mapLayerTitle != null && mapLayerTitle.contains(name)) { >> + mapLayerOfChoosenLayers.add(mapLayer); >> + } else if (mapLayerName != null && mapLayerName.contains(name)) { >> + mapLayerOfChoosenLayers.add(mapLayer); >> + } >> + } >> + } >> + return mapLayerOfChoosenLayers; >> + } >> + >> + private WMSLayer[] getSelectedWMSLayer( PlugInContext context ) { >> + Collection nodes = context.getLayerNamePanel().selectedNodes( WMSLayer.class ); >> + List<WMSLayer> wmsLayerList = new ArrayList<>(); >> + for (Object o : nodes) { >> + wmsLayerList.add((WMSLayer)o); >> + } >> + return wmsLayerList.toArray(new WMSLayer[0]); >> + } >> + >> + private Set<MapLayer> getAllMapLayer( PlugInContext context ) throws Exception { >> + WMSLayer[] wmsLayers = getSelectedWMSLayer( context ); >> + Set<MapLayer> set = new HashSet<>(); >> + for (WMSLayer layer : wmsLayers) { >> + WMService wmService = layer.getService(); >> + Capabilities capabilities = wmService.getCapabilities(); >> + MapLayer topLayer = capabilities.getTopLayer(); >> + set.addAll(topLayer.getLayerList()); >> + } >> + return set; >> + } >> + >> + private String getSelectedSRS( PlugInContext context ) { >> + String selectedSRS = "0"; >> + WMSLayer[] wmsLayers = getSelectedWMSLayer( context ); >> + for (WMSLayer wmsLayer : wmsLayers) { >> + selectedSRS = wmsLayer.getSRS().toLowerCase(); >> + } >> + //[MM] just return the SRS of the last WMSLayer ? >> + return selectedSRS; >> + } >> + >> + private Map<String,BoundingBox> getBoundingBoxesForSRS( List<MapLayer> mapLayerList, String srs ) { >> + Map<String,BoundingBox> boundingBoxesForSRS = new HashMap<>(); >> + >> + for (MapLayer mapLayer : mapLayerList) { >> + >> + // All BoundingBoxes >> + List<BoundingBox> boundingBoxList = mapLayer.getAllBoundingBoxList(); >> + // LatLon BoundingBox (epsg:4326) >> + BoundingBox latLonBoundingBox = mapLayer.getLatLonBoundingBox(); >> + >> + if ( latLonBoundingBox != null && boundingBoxList.size() > 0) { >> + boundingBoxList.add(latLonBoundingBox); >> + Set<String> doppelt = new HashSet<>(); >> + for (BoundingBox bb : boundingBoxList) { >> + String bbSrs = bb.getSRS().toLowerCase(); >> + if (bbSrs.contains("latlon")) bbSrs = "epsg:4326"; >> + >> + if (bbSrs.equalsIgnoreCase(srs)) { // SRS found >> + String key = mapLayer.getTitle(); >> + if (!doppelt.add(key)) { >> + key = key + " (" + bbSrs + ")"; >> + } >> + boundingBoxesForSRS.put(key, bb); >> + } >> + } >> + } >> + } >> + return boundingBoxesForSRS; >> + } >> + >> + private void zoomToBoundingBox( PlugInContext context, Map<String,BoundingBox> boundingBoxesForSRS, String selectedSRS ) >> + throws Exception { >> + JComboBox<String> comboBox = makeComboBox( boundingBoxesForSRS ); >> + JPanel jp = new JPanel(); >> + JButton jb = new JButton( "?" ); >> + jb.setActionCommand( "showInfoTable" ); >> + jb.addActionListener( new ShowInfoActionListener(context) ); >> + >> + String tmpLatLon = ""; >> + if ( selectedSRS.contains( "4326" ) ) >> + tmpLatLon = " (LatLon)"; >> + >> + jp.add( comboBox ); >> + jp.add( jb ); >> + >> + int back = JOptionPane.showConfirmDialog( context.getWorkbenchFrame(), jp, I18N >> + .get( "org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for" ) >> + + " " + selectedSRS + tmpLatLon, JOptionPane.OK_CANCEL_OPTION, >> + JOptionPane.INFORMATION_MESSAGE ); >> + >> + if ( back == JOptionPane.CANCEL_OPTION || back < 0 ) return; >> + >> + // Get the BoundingBox from name >> + BoundingBox selectedBB = boundingBoxesForSRS.get( comboBox.getSelectedItem() ); >> + if ( selectedBB == null ) >> + return; >> + >> + String message = selectedBB.toString(); >> + >> + context.getWorkbenchFrame().setStatusMessage( message ); >> + >> + Coordinate min = new Coordinate( selectedBB.getWestBound(), selectedBB.getSouthBound() ); >> + Coordinate max = new Coordinate( selectedBB.getEastBound(), selectedBB.getNorthBound() ); >> + Envelope env = new Envelope( min, max ); >> + >> + context.getLayerViewPanel().getViewport().zoom( env ); >> + context.getLayerViewPanel().fireSelectionChanged(); >> + >> + context.getActiveInternalFrame().updateUI(); >> + } >> + >> + private JComboBox<String> makeComboBox( Map<String,BoundingBox> boundingBoxesForSRS ) { >> + JComboBox<String> comboBox = new JComboBox<>(); >> + if ( boundingBoxesForSRS.size() > 0 ) { >> + String[] keys = boundingBoxesForSRS.keySet().toArray(new String[0]); >> + Arrays.sort( keys ); >> + comboBox = new JComboBox<>( keys ); >> + } >> + else { >> + comboBox.addItem( I18N >> + .get( "org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.no-bounding-boxes-available" ) ); >> + } >> + return comboBox; >> + } >> + >> + private class ShowInfoActionListener implements ActionListener { >> + >> + PlugInContext context; >> + >> + ShowInfoActionListener(PlugInContext context) { >> + this.context = context; >> + } >> + >> + public void actionPerformed( ActionEvent ae ) { >> + if ( ae.getActionCommand().equals( "showInfoTable" ) ) { >> + try { >> + showInformationTable( context ); >> + } catch (Exception e) { >> + Logger.error( "Error in ShowInfoActionListener" , e); >> + } >> + } >> + } >> + >> + } >> + >> + private Object[][] values = null; >> + private String[] columnNames = null; >> + private JTable infoTable = null; >> + private TableColumnModel tcm = null; >> + private JScrollPane infoTableSc = null; >> + >> + void showInformationTable( PlugInContext context ) throws Exception { >> + >> + this.values = getMapLayerInformationForTable( context ); >> + this.columnNames = MapLayerAttributes.getColumnNames(); >> + >> + ZoomToWMSLayerPlugIn.InfoTableModel itm = >> + new ZoomToWMSLayerPlugIn.InfoTableModel(); >> + >> + this.infoTable = new JTable( itm ); >> + >> + JTableHeader th = infoTable.getTableHeader(); >> + th.setReorderingAllowed( false ); >> + th.addMouseListener( new ZoomToWMSLayerPlugIn.MASort() ); >> + >> + tcm = infoTable.getColumnModel(); >> + >> + TableColumn tc0 = tcm.getColumn( 0 ); >> + TableColumn tc1 = tcm.getColumn( 1 ); >> + TableColumn tc2 = tcm.getColumn( 2 ); >> + >> + TableColumn tc3 = tcm.getColumn( 3 ); >> + TableColumn tc4 = tcm.getColumn( 4 ); >> + TableColumn tc5 = tcm.getColumn( 5 ); >> + TableColumn tc6 = tcm.getColumn( 6 ); >> + >> + tc0.setMinWidth( 160 ); >> + tc1.setMinWidth( 120 ); >> + tc2.setMinWidth( 70 ); >> + >> + tc3.setMinWidth( 90 ); >> + tc4.setMinWidth( 90 ); >> + tc5.setMinWidth( 90 ); >> + tc6.setMinWidth( 90 ); >> + >> + th.setResizingAllowed( true ); >> + infoTable.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); >> + >> + this.infoTableSc = new JScrollPane( infoTable ); >> + infoTableSc.setPreferredSize ( new java.awt.Dimension( 735, 300 ) ); >> + >> + JOptionPane.showMessageDialog( context.getWorkbenchFrame(), infoTableSc, "InfoTable", >> + JOptionPane.INFORMATION_MESSAGE ); >> + } >> + >> + Object[][] getMapLayerInformationForTable( PlugInContext context ) throws Exception { >> + Object[][] mapLayerInformationForTable; >> + >> + ZoomToWMSLayerPlugIn.MapLayerAttributes mapLayerAttr = >> + new ZoomToWMSLayerPlugIn.MapLayerAttributes(); >> + >> + List mapLayerRows = new ArrayList(); >> + Set<MapLayer> mapLayerSet = getAllMapLayer( context ); >> + >> + if ( mapLayerSet == null ) >> + return null; >> + >> + int anzLayer = mapLayerSet.size(); >> + >> + if ( anzLayer == 0 ) >> + return null; >> + >> + for (MapLayer mapLayer : mapLayerSet) { >> + mapLayerRows.addAll( mapLayerAttr.getMapLayerRows( mapLayer ) ); >> + } >> + >> + int anzRows = mapLayerRows.size(); >> + int anzColumns = ZoomToWMSLayerPlugIn.MapLayerAttributes.getColumnNames().length; >> + >> + mapLayerInformationForTable = new Object[anzRows][anzColumns]; >> + >> + for (int k = 0; k < anzRows; k++) { >> + MapLayerAttributes mLA = (MapLayerAttributes) mapLayerRows.get( k ); >> + Object[] attrib = mLA.toObjectArray(); >> + >> + for (int m = 0; m < attrib.length; m++) { >> + mapLayerInformationForTable[k][m] = attrib[m]; >> + } >> + } >> + // ------------------------ ZoomToWMSLayerPLugIn getMapLayerInformationForTable ( ) >> + return mapLayerInformationForTable; >> + } >> + >> + String[][] getMapLayerInformationForTable( MapLayerAttributes[] mapLayerAttributesArray ) { >> + >> + int numRows = mapLayerAttributesArray.length; >> + int numCols = ZoomToWMSLayerPlugIn.MapLayerAttributes.getColumnNames().length; >> + >> + String[][] mapLayerInformationForTable = new String[numRows][numCols]; >> + >> + for (int k = 0; k < numRows; k++) { >> + ZoomToWMSLayerPlugIn.MapLayerAttributes mLA = mapLayerAttributesArray[k]; >> + Object[] attrib = mLA.toObjectArray(); >> + for (int m = 0; m < attrib.length; m++) { >> + values[k][m] = attrib[m]; >> + } >> + } >> + >> + return mapLayerInformationForTable; >> + } >> + >> + >> + private class InfoTableModel extends AbstractTableModel { >> + >> + public int getColumnCount() { >> + return columnNames.length; >> + } >> + public int getRowCount() { >> + return values.length; >> + } >> + public String getColumnName( int col ) { >> + return columnNames[col]; >> + } >> + public Object getValueAt( int row, int col ) { >> + return values[row][col]; >> + } >> + public Class getColumnClass( int c ) { >> + return getValueAt( 0, c ).getClass(); >> + } >> + public boolean isCellEditable( int row, int col ) { >> + return false; >> + } >> + } >> + >> + private class MASort extends MouseAdapter { >> + >> + public void mousePressed( MouseEvent me ) { >> + if ( me.getButton() == MouseEvent.BUTTON3 ) { >> + int viewColumn = tcm.getColumnIndexAtX( me.getX() ); >> + int column = infoTable.convertColumnIndexToModel( viewColumn ); >> + >> + if ( column == 0 ) { >> + sortTable( ZoomToWMSLayerPlugIn.MapLayerAttributes.SORT_AFTER_TITLE ); >> + } else if ( column == 1 ) { >> + sortTable( ZoomToWMSLayerPlugIn.MapLayerAttributes.SORT_AFTER_NAME ); >> + } >> + >> + else if ( column == 2 ) { >> + sortTable( ZoomToWMSLayerPlugIn.MapLayerAttributes.SORT_AFTER_SRS ); >> + } >> + >> + else if ( column == 3 ) { >> + sortTable( ZoomToWMSLayerPlugIn.MapLayerAttributes.SORT_AFTER_MINX ); >> + } >> + >> + else if ( column == 4 ) { >> + sortTable( ZoomToWMSLayerPlugIn.MapLayerAttributes.SORT_AFTER_MINY ); >> + } >> + >> + else if ( column == 5 ) { >> + sortTable( ZoomToWMSLayerPlugIn.MapLayerAttributes.SORT_AFTER_MAXX ); >> + } >> + >> + else if ( column == 6 ) { >> + sortTable( ZoomToWMSLayerPlugIn.MapLayerAttributes.SORT_AFTER_MAXY ); >> + } >> + >> + } >> + >> + } >> + >> + } >> + >> + >> + private void sortTable( int sortAfter ) { >> + ZoomToWMSLayerPlugIn.MapLayerAttributes[] mapLayerAttributes = toMapLayerAttributesArray( values ); >> + ZoomToWMSLayerPlugIn.MapLayerAttributes.setSortAfter( sortAfter ); >> + Arrays.sort( mapLayerAttributes ); >> + getMapLayerInformationForTable( mapLayerAttributes ); >> + infoTable.updateUI(); >> + } >> + >> + ZoomToWMSLayerPlugIn.MapLayerAttributes[] toMapLayerAttributesArray(Object[][] m) { >> + if ( m == null ) >> + return null; >> + >> + int numRows = m.length; >> + >> + ZoomToWMSLayerPlugIn.MapLayerAttributes[] mapLayerAttributesArray = new ZoomToWMSLayerPlugIn.MapLayerAttributes[numRows]; >> + >> + for (int i = 0; i < numRows; i++) { >> + String title = (String) m[i][0]; >> + String name = (String) m[i][1]; >> + String srs = (String) m[i][2]; >> + double minx = (Double) m[i][3]; >> + double miny = (Double) m[i][4]; >> + double maxx = (Double) m[i][5]; >> + double maxy = (Double) m[i][6]; >> + >> + mapLayerAttributesArray[i] = new ZoomToWMSLayerPlugIn.MapLayerAttributes( title, name, srs, minx, miny, >> + maxx, maxy ); >> + } >> + return mapLayerAttributesArray; >> + } >> + >> + >> + private static class MapLayerAttributes implements Comparable { >> + >> + static final int SORT_UP = 1; >> + static final int SORT_DOWN = -1; >> + static final int SORT_AFTER_TITLE = 1; >> + static final int SORT_AFTER_NAME = 2; >> + static final int SORT_AFTER_SRS = 3; >> + static final int SORT_AFTER_MINX = 4; >> + static final int SORT_AFTER_MINY = 5; >> + static final int SORT_AFTER_MAXX = 6; >> + static final int SORT_AFTER_MAXY = 7; >> + static int[] sortUpDown = { SORT_DOWN, SORT_DOWN, SORT_DOWN, SORT_DOWN, SORT_DOWN, >> + SORT_DOWN, SORT_DOWN }; >> + >> + static int sortAfter; >> + >> + String srs, name, title; >> + >> + double minx, miny, maxx, maxy; >> + >> + MapLayerAttributes() { >> + this.srs = " "; >> + this.name = "Unknown"; >> + this.title = "Unknown"; >> + >> + this.minx = 0.; >> + this.miny = 0.; >> + this.maxx = 0.; >> + this.maxy = 0.; >> + } >> + >> + >> + MapLayerAttributes( String title, String name, String srs, double minx, double miny, >> + double maxx, double maxy ) { >> + this.title = title; >> + this.name = name; >> + this.srs = srs; >> + >> + this.minx = minx; >> + this.miny = miny; >> + this.maxx = maxx; >> + this.maxy = maxy; >> + } >> + >> + >> + public int compareTo( Object object ) { // Sorting must be overwritten >> + int ret = 1; >> + MapLayerAttributes mla = (MapLayerAttributes) object; >> + >> + if ( sortAfter == SORT_AFTER_TITLE ) { >> + ret = title.compareTo( mla.title ) * sortUpDown[0]; >> + } >> + >> + else if ( sortAfter == SORT_AFTER_NAME ) { >> + ret = name.compareTo( mla.name ) * sortUpDown[1]; >> + } >> + >> + else if ( sortAfter == SORT_AFTER_SRS ) { >> + ret = srs.compareTo( mla.srs ) * sortUpDown[2]; >> + } >> + >> + else if ( sortAfter == SORT_AFTER_MINX ) { >> + if ( minx > mla.minx ) { >> + ret = 1 * sortUpDown[3]; >> + } else { >> + ret = -1 * sortUpDown[3]; >> + } >> + } >> + >> + else if ( sortAfter == SORT_AFTER_MINY ) { >> + if ( miny > mla.miny ) { >> + ret = 1 * sortUpDown[4]; >> + } else { >> + ret = -1 * sortUpDown[4]; >> + } >> + } >> + >> + else if ( sortAfter == SORT_AFTER_MAXX ) { >> + if ( maxx > mla.maxx ) { >> + ret = 1 * sortUpDown[5]; >> + } else { >> + ret = -1 * sortUpDown[5]; >> + } >> + } >> + >> + else if ( sortAfter == SORT_AFTER_MAXY ) { >> + if ( maxy > mla.maxy ) { >> + ret = 1 * sortUpDown[6]; >> + } else { >> + ret = -1 * sortUpDown[6]; >> + } >> + } >> + >> + return ret; >> + >> + } >> + >> + double cutDouble( double value, int afterComma ) { >> + double mulQuot = Math.pow( 10.d, afterComma ); >> + long tmp = (long) ( value * mulQuot ); >> + return tmp / mulQuot; >> + } >> + >> + >> + public static String[] getColumnNames() { >> + return new String[]{ "Title", "Name", "SRS", "MinX", "MinY", "MaxX", "MaxY" }; >> + } >> + >> + >> + List<MapLayerAttributes> getMapLayerRows( MapLayer mapLayer ) { >> + double minX, minY, maxX, maxY; >> + >> + String srs, name, title; >> + String unknown = "Unknown"; >> + >> + List<MapLayerAttributes> mapLayerRows = new ArrayList<>(); >> + >> + name = mapLayer.getName(); >> + if ( name == null ) >> + name = unknown; >> + title = mapLayer.getTitle(); >> + if ( title == null ) >> + title = unknown; >> + >> + ArrayList<BoundingBox> boundingBoxList = mapLayer.getAllBoundingBoxList(); >> + >> + for (BoundingBox bb : boundingBoxList) { >> + >> + if ( bb == null ) { >> + srs = unknown; >> + minX = 0.; >> + minY = 0.; >> + maxX = 400.; >> + maxY = 400.; >> + } else { >> + srs = bb.getSRS().toLowerCase(); >> + minX = bb.getWestBound(); >> + minY = bb.getSouthBound(); >> + maxX = bb.getEastBound(); >> + maxY = bb.getNorthBound(); >> + } >> + >> + mapLayerRows.add( >> + new ZoomToWMSLayerPlugIn.MapLayerAttributes( title, name, srs, minX, minY, maxX, maxY ) ); >> + } >> + >> + return mapLayerRows; >> + } >> + >> + String getName() { >> + return this.name; >> + } >> + >> + String getTitle() { >> + return this.title; >> + } >> + >> + String getSRS() { >> + return this.srs; >> + } >> + >> + double getMinx() { >> + return this.minx; >> + } >> + >> + double getMiny() { >> + return this.m... [truncated message content] |