Revision: 6682 http://sourceforge.net/p/jump-pilot/code/6682 Author: ma15569 Date: 2021-12-08 05:43:53 +0000 (Wed, 08 Dec 2021) Log Message: ----------- Substituded Utils.purgenoData methodwith rasterImageLayer.getValues method
Modified Paths: -------------- core/trunk/src/org/openjump/core/rasterimage/styler/ui/IntervalPanel.java core/trunk/src/org/openjump/core/rasterimage/styler/ui/RasterStylesDialog.java Modified: core/trunk/src/org/openjump/core/rasterimage/styler/ui/IntervalPanel.java =================================================================== --- core/trunk/src/org/openjump/core/rasterimage/styler/ui/IntervalPanel.java 2021-12-08 05:39:14 UTC (rev 6681) +++ core/trunk/src/org/openjump/core/rasterimage/styler/ui/IntervalPanel.java 2021-12-08 05:43:53 UTC (rev 6682) @@ -21,7 +21,6 @@ import org.openjump.core.rasterimage.styler.ColorUtils; import org.openjump.core.rasterimage.styler.RasterClassifier1D; import org.openjump.core.rasterimage.styler.RasterStylesExtension; -import org.openjump.core.rasterimage.styler.Utils; import org.openjump.core.rasterimage.styler.ui.ColorsTablePanel.TableType; import com.vividsolutions.jump.util.Range; @@ -33,418 +32,438 @@ */ public class IntervalPanel extends javax.swing.JPanel { - /** - * Creates new form IntervalPanel - * @param parent parent Component - * @param rasterImageLayer rasterImageLayer to symbolize - * @param minMaxValues min and max pixel values for this image - */ - public IntervalPanel(Component parent, RasterImageLayer rasterImageLayer, Range minMaxValues) { + /** + * Creates new form IntervalPanel + * + * @param parent parent Component + * @param rasterImageLayer rasterImageLayer to symbolize + * @param minMaxValues min and max pixel values for this image + */ + public IntervalPanel(Component parent, RasterImageLayer rasterImageLayer, Range minMaxValues) { - initComponents(); - this.parent = parent; - this.rasterImageLayer = rasterImageLayer; - this.minMaxValues = minMaxValues; - - fixComponents(); - } + initComponents(); + this.parent = parent; + this.rasterImageLayer = rasterImageLayer; + this.minMaxValues = minMaxValues; - public void reset() { - try { - jComboBox_Method.setSelectedItem(classMethods_m.get(ClassificationMethod.JENKS)); - jTextField_Classes.setText("5"); - jComboBox_Gradient.setSelectedIndex(0); - rampAll(); - } catch (Exception ex) { - Logger.error(ex); - } - } + fixComponents(); + } - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - private void initComponents() { - java.awt.GridBagConstraints gridBagConstraints; + public void reset() { + try { + jComboBox_Method.setSelectedItem(classMethods_m.get(ClassificationMethod.JENKS)); + jTextField_Classes.setText("5"); + jComboBox_Gradient.setSelectedIndex(0); + rampAll(); + } catch (final Exception ex) { + Logger.error(ex); + } + } - jLabel_Method = new javax.swing.JLabel(); - jComboBox_Method = new javax.swing.JComboBox(); - jButton_Values = new javax.swing.JButton(); - jLabel_Classes = new javax.swing.JLabel(); - jTextField_Classes = new javax.swing.JTextField(); - jPanel_Table = new javax.swing.JPanel(); - jButton_AddRow = new javax.swing.JButton(); - jButton_RemoveRow = new javax.swing.JButton(); - jButton_Ramp = new javax.swing.JButton(); + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; - setMinimumSize(new java.awt.Dimension(365, 160)); - setPreferredSize(new java.awt.Dimension(365, 160)); - addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - formComponentShown(evt); - } - }); - java.awt.GridBagLayout layout = new java.awt.GridBagLayout(); - layout.columnWidths = new int[] {0, 5, 0, 5, 0}; - layout.rowHeights = new int[] {0, 5, 0, 5, 0, 5, 0, 5, 0}; - setLayout(layout); + jLabel_Method = new javax.swing.JLabel(); + jComboBox_Method = new javax.swing.JComboBox(); + jButton_Values = new javax.swing.JButton(); + jLabel_Classes = new javax.swing.JLabel(); + jTextField_Classes = new javax.swing.JTextField(); + jPanel_Table = new javax.swing.JPanel(); + jButton_AddRow = new javax.swing.JButton(); + jButton_RemoveRow = new javax.swing.JButton(); + jButton_Ramp = new javax.swing.JButton(); - java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); // NOI18N - jLabel_Method.setText(bundle.getString("IntervalPanel.jLabel.method")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 0; - add(jLabel_Method, gridBagConstraints); + setMinimumSize(new java.awt.Dimension(365, 160)); + setPreferredSize(new java.awt.Dimension(365, 160)); + addComponentListener(new java.awt.event.ComponentAdapter() { + @Override + public void componentShown(java.awt.event.ComponentEvent evt) { + formComponentShown(evt); + } + }); + final java.awt.GridBagLayout layout = new java.awt.GridBagLayout(); + layout.columnWidths = new int[] { 0, 5, 0, 5, 0 }; + layout.rowHeights = new int[] { 0, 5, 0, 5, 0, 5, 0, 5, 0 }; + setLayout(layout); - jComboBox_Method.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - jComboBox_Method.addActionListener(this::jComboBox_MethodActionPerformed); + final java.util.ResourceBundle bundle = java.util.ResourceBundle + .getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); // NOI18N + jLabel_Method.setText(bundle.getString("IntervalPanel.jLabel.method")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + add(jLabel_Method, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 0; - gridBagConstraints.gridwidth = 3; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.ipadx = 3; - add(jComboBox_Method, gridBagConstraints); + jComboBox_Method.setModel( + new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + jComboBox_Method.addActionListener(this::jComboBox_MethodActionPerformed); - jButton_Values.setText(bundle.getString("IntervalPanel.jButton.RampAll")); // NOI18N - jButton_Values.addActionListener(this::jButton_ValuesActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 0; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.ipadx = 3; + add(jComboBox_Method, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 4; - gridBagConstraints.gridy = 4; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - add(jButton_Values, gridBagConstraints); + jButton_Values.setText(bundle.getString("IntervalPanel.jButton.RampAll")); // NOI18N + jButton_Values.addActionListener(this::jButton_ValuesActionPerformed); - jLabel_Classes.setText(bundle.getString("IntervalPanel.jLabel.Classes")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 2; - add(jLabel_Classes, gridBagConstraints); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 4; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + add(jButton_Values, gridBagConstraints); - jTextField_Classes.setText("5"); - jTextField_Classes.setMinimumSize(new java.awt.Dimension(70, 20)); - jTextField_Classes.setPreferredSize(new java.awt.Dimension(70, 20)); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 2; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.weightx = 1.0; - add(jTextField_Classes, gridBagConstraints); + jLabel_Classes.setText(bundle.getString("IntervalPanel.jLabel.Classes")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + add(jLabel_Classes, gridBagConstraints); - jPanel_Table.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jPanel_Table.setName(""); // NOI18N - jPanel_Table.setLayout(new java.awt.BorderLayout()); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 8; - gridBagConstraints.gridwidth = 5; - gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; - gridBagConstraints.weighty = 0.5; - add(jPanel_Table, gridBagConstraints); + jTextField_Classes.setText("5"); + jTextField_Classes.setMinimumSize(new java.awt.Dimension(70, 20)); + jTextField_Classes.setPreferredSize(new java.awt.Dimension(70, 20)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; + add(jTextField_Classes, gridBagConstraints); - jButton_AddRow.setText(bundle.getString("IntervalPanel.jButton.AddRow")); // NOI18N - jButton_AddRow.addActionListener(this::jButton_AddRowActionPerformed); + jPanel_Table.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jPanel_Table.setName(""); // NOI18N + jPanel_Table.setLayout(new java.awt.BorderLayout()); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 8; + gridBagConstraints.gridwidth = 5; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weighty = 0.5; + add(jPanel_Table, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 6; - add(jButton_AddRow, gridBagConstraints); + jButton_AddRow.setText(bundle.getString("IntervalPanel.jButton.AddRow")); // NOI18N + jButton_AddRow.addActionListener(this::jButton_AddRowActionPerformed); - jButton_RemoveRow.setText(bundle.getString("IntervalPanel.jButton.RemoveRow")); // NOI18N - jButton_RemoveRow.addActionListener(this::jButton_RemoveRowActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 6; + add(jButton_AddRow, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 6; - add(jButton_RemoveRow, gridBagConstraints); + jButton_RemoveRow.setText(bundle.getString("IntervalPanel.jButton.RemoveRow")); // NOI18N + jButton_RemoveRow.addActionListener(this::jButton_RemoveRowActionPerformed); - jButton_Ramp.setText(bundle.getString("IntervalPanel.jButton.Ramp")); // NOI18N - jButton_Ramp.addActionListener(this::jButton_RampActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 6; + add(jButton_RemoveRow, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 4; - gridBagConstraints.gridy = 6; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - add(jButton_Ramp, gridBagConstraints); - } + jButton_Ramp.setText(bundle.getString("IntervalPanel.jButton.Ramp")); // NOI18N + jButton_Ramp.addActionListener(this::jButton_RampActionPerformed); - private void jButton_ValuesActionPerformed(java.awt.event.ActionEvent evt) { - try { - rampAll(); - } catch (Exception ex) { - Logger.error(ex); - } - } + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 6; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + add(jButton_Ramp, gridBagConstraints); + } - private void jButton_AddRowActionPerformed(java.awt.event.ActionEvent evt) { - addRow(); - } + private void jButton_ValuesActionPerformed(java.awt.event.ActionEvent evt) { + try { + rampAll(); + } catch (final Exception ex) { + Logger.error(ex); + } + } - private void jButton_RemoveRowActionPerformed(java.awt.event.ActionEvent evt) { - removeRow(); - } + private void jButton_AddRowActionPerformed(java.awt.event.ActionEvent evt) { + addRow(); + } - private void jButton_RampActionPerformed(java.awt.event.ActionEvent evt) { - try { - rampColors(); - } catch (Exception ex) { - Logger.error(ex); - } - } + private void jButton_RemoveRowActionPerformed(java.awt.event.ActionEvent evt) { + removeRow(); + } - private void jComboBox_MethodActionPerformed(java.awt.event.ActionEvent evt) { - // TODO add your handling code here: - } + private void jButton_RampActionPerformed(java.awt.event.ActionEvent evt) { + try { + rampColors(); + } catch (final Exception ex) { + Logger.error(ex); + } + } - private void formComponentShown(java.awt.event.ComponentEvent evt) { - - if(firstTimeShown) { - firstTimeShown = false; - try { - rampAll(); - } catch (Exception ex) { - Logger.error(ex); - } - } - - } + private void jComboBox_MethodActionPerformed(java.awt.event.ActionEvent evt) { + // TODO add your handling code here: + } + private void formComponentShown(java.awt.event.ComponentEvent evt) { - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton jButton_AddRow; - private javax.swing.JButton jButton_Ramp; - private javax.swing.JButton jButton_RemoveRow; - private javax.swing.JButton jButton_Values; - private javax.swing.JComboBox jComboBox_Method; - private javax.swing.JLabel jLabel_Classes; - private javax.swing.JLabel jLabel_Method; - private javax.swing.JPanel jPanel_Table; - private javax.swing.JTextField jTextField_Classes; - // End of variables declaration//GEN-END:variables + if (firstTimeShown) { + firstTimeShown = false; + try { + rampAll(); + } catch (final Exception ex) { + Logger.error(ex); + } + } - private void fixComponents() { - - classMethods_m.put(ClassificationMethod.EQUAL_RANGE, java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.EqualInterval")); - classMethods_m.put(ClassificationMethod.GIVEN_INTERVAL, java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.GivenInterval")); - classMethods_m.put(ClassificationMethod.JENKS, java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.Jenks")); - classMethods_m.put(ClassificationMethod.MAX_BREAKS, java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.MaxBreaks")); - classMethods_m.put(ClassificationMethod.MEAN_STDEV, java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.MeanStDev")); - classMethods_m.put(ClassificationMethod.QUANTILE, java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.Quantiles")); - - jComboBox_Method.removeAllItems(); - jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.EQUAL_RANGE)); - jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.GIVEN_INTERVAL)); - jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.JENKS)); - jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.MAX_BREAKS)); - jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.MEAN_STDEV)); - jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.QUANTILE)); - jComboBox_Method.setSelectedItem(classMethods_m.get(ClassificationMethod.JENKS)); + } - // Listener - jComboBox_Method.addActionListener (new ActionListener () { - @Override - public void actionPerformed(ActionEvent e) { - - ClassificationMethod classMethod = getKeyByValue(classMethods_m, jComboBox_Method.getSelectedItem().toString()); - if(classMethod == ClassificationMethod.GIVEN_INTERVAL) { - jLabel_Classes.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.jLabel.classwidth")); - } else { - jLabel_Classes.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.jLabel.Classes")); - } - - } - }); - - // Color ramps - jComboBox_Gradient = GUIUtils.createStandardGradientComboBox(200, 18); + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton_AddRow; + private javax.swing.JButton jButton_Ramp; + private javax.swing.JButton jButton_RemoveRow; + private javax.swing.JButton jButton_Values; + private javax.swing.JComboBox jComboBox_Method; + private javax.swing.JLabel jLabel_Classes; + private javax.swing.JLabel jLabel_Method; + private javax.swing.JPanel jPanel_Table; + private javax.swing.JTextField jTextField_Classes; + // End of variables declaration//GEN-END:variables - java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 4; - gridBagConstraints.gridwidth = 1; - gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; - gridBagConstraints.weighty = 0.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - add(jComboBox_Gradient, gridBagConstraints); - - GUIUtils.addGradientComboBoxToList(jComboBox_Gradient); - - } - - private void rampAll() throws Exception { - - int classesCount = 5; - try { - classesCount = Integer.parseInt(jTextField_Classes.getText()); - } catch(Exception ex) { - JOptionPane.showMessageDialog( - this, - java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") - .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.numberOfClassesError"), - RasterStylesExtension.extensionName, - JOptionPane.WARNING_MESSAGE); - return; - } - double classWidth = 0; - - double[] breaks = null; - double[] rasterData = Utils.purgeNoData(rasterImageLayer.getActualRasterData(),rasterImageLayer); - - ClassificationMethod classMethod = getKeyByValue(classMethods_m, jComboBox_Method.getSelectedItem().toString()); - switch (classMethod) { - - case EQUAL_RANGE: - breaks = Classifier1D.classifyEqualRange(rasterData, classesCount); - break; - case GIVEN_INTERVAL: - breaks = RasterClassifier1D.classifyGivenInterval(rasterImageLayer, 0, classesCount); - classWidth = classesCount; - classesCount = breaks.length; - break; - case JENKS: - /* Sampling needed */ - int top = 1000; - if(rasterData.length > top) { - List<Double> sampled_l = new ArrayList<Double>(); - sampled_l.add((Double) minMaxValues.getMin()); - sampled_l.add((Double) minMaxValues.getMax()); - for(int v=0; v<rasterData.length; v=v+(rasterData.length / top)) { - sampled_l.add(rasterData[v]); - } - double[] sampledRasterData = new double[sampled_l.size()]; - for(int v=0; v<sampled_l.size(); v++) { - sampledRasterData[v] = sampled_l.get(v); - } - breaks = Classifier1D.classifyNaturalBreaks(sampledRasterData, classesCount); - break; - } - - breaks = Classifier1D.classifyNaturalBreaks(rasterData, classesCount); - break; - case MAX_BREAKS: - breaks = Classifier1D.classifyMaxBreaks(rasterData, classesCount); - break; - case MEAN_STDEV: - breaks = Classifier1D.classifyMeanStandardDeviation(rasterData, classesCount); - break; - case QUANTILE: - breaks = Classifier1D.classifyEqualNumber(rasterData, classesCount); - break; - } + private void fixComponents() { - if(breaks == null) { - throw new Exception(java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.message.ErrorWhileClassifying")); - } + classMethods_m.put(ClassificationMethod.EQUAL_RANGE, + java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.EqualInterval")); + classMethods_m.put(ClassificationMethod.GIVEN_INTERVAL, + java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.GivenInterval")); + classMethods_m.put(ClassificationMethod.JENKS, + java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.Jenks")); + classMethods_m.put(ClassificationMethod.MAX_BREAKS, + java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.MaxBreaks")); + classMethods_m.put(ClassificationMethod.MEAN_STDEV, + java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.MeanStDev")); + classMethods_m.put(ClassificationMethod.QUANTILE, + java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.Quantiles")); - ColorMapEntry[] paletteColorMapEntries = ((GradientCanvas) jComboBox_Gradient.getSelectedItem()).getColorMapEntries(); - - /* Calculate colors */ - ColorUtils colorUtils = new ColorUtils(); - ColorMapEntry[] colorMapEntries = new ColorMapEntry[classesCount]; - int colorsCount = paletteColorMapEntries.length; - - double minVal = (Double) minMaxValues.getMin(); - if(classMethod == ClassificationMethod.GIVEN_INTERVAL) { - minVal = Math.floor((Double) minMaxValues.getMin() / classWidth) * classWidth; - } - - colorMapEntries[0] = new ColorMapEntry(minVal, paletteColorMapEntries[0].getColor()); - for(int c=1; c<classesCount; c++) { - - double cellRelDistance = (double) c / (double) (classesCount-1); - double colorRelDistance = cellRelDistance * (colorsCount - 1); - - Color startColor = paletteColorMapEntries[(int) Math.floor(colorRelDistance)].getColor(); - Color endColor = paletteColorMapEntries[(int) Math.ceil(colorRelDistance)].getColor(); - - Color color = colorUtils.interpolateColor(startColor, endColor, cellRelDistance); - colorMapEntries[c] = new ColorMapEntry(breaks[c-1], color); - } - - updateTable(colorMapEntries); - - } - - private void addRow() { - colorsTablePanel.addRows(); - } - - private void removeRow() { - colorsTablePanel.removeRow(); - } - - private void rampColors() throws Exception { - if(colorsTablePanel.getSelectedRowsCount() != 2) { - JOptionPane.showMessageDialog( - this, - java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.EqualInterval.SelectTowRowsToRamp"), - RasterStylesExtension.extensionName, - JOptionPane.WARNING_MESSAGE); - } - colorsTablePanel.rampColors(); - } - - public static <T, E> T getKeyByValue(Map<T, E> map, E value) { - for (Entry<T, E> entry : map.entrySet()) { - if (value.equals(entry.getValue())) { - return entry.getKey(); - } - } - return null; - } - - public void plugRasterSymbology(RasterSymbology rasterSymbology) { - - updateTable(rasterSymbology.getColorMapEntries()); - - } - - private void updateTable(ColorMapEntry[] colorMapEntries) { - - /* Update table */ - if(colorsTablePanel == null) { - colorsTablePanel = new ColorsTablePanel(parent, TableType.INTERVALS, - colorMapEntries, rasterImageLayer.getNoDataValue(), false); - GridBagLayout layout = (GridBagLayout)getLayout(); - GridBagConstraints gbc = layout.getConstraints(jPanel_Table); - remove(jPanel_Table); - add(colorsTablePanel, gbc, 5); - validate(); - } else { - colorsTablePanel.updateTable(colorMapEntries); - } - - } - - public RasterSymbology getRasterStyler() throws Exception{ - - RasterSymbology rasterSymbolizer = new RasterSymbology(RasterSymbology.TYPE_INTERVALS); - for (ColorMapEntry colorMapEntry : colorsTablePanel.getColorMapEntries()) { - rasterSymbolizer.addColorMapEntry(colorMapEntry.getUpperValue(), colorMapEntry.getColor()); - } - - return rasterSymbolizer; - } - - private final java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); - private final Component parent; - private final Map<ClassificationMethod,String> classMethods_m = new EnumMap<ClassificationMethod,String>(ClassificationMethod.class); - private RasterImageLayer rasterImageLayer = null; - private ColorsTablePanel colorsTablePanel = null; - private final Range minMaxValues; - private GradientComboBox jComboBox_Gradient; - private boolean firstTimeShown = true; - - public enum ClassificationMethod { - - UNIQUE_VALUE, EQUAL_RANGE, GIVEN_INTERVAL, QUANTILE, MEAN_STDEV, MAX_BREAKS, JENKS; - - } + jComboBox_Method.removeAllItems(); + jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.EQUAL_RANGE)); + jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.GIVEN_INTERVAL)); + jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.JENKS)); + jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.MAX_BREAKS)); + jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.MEAN_STDEV)); + jComboBox_Method.addItem(classMethods_m.get(ClassificationMethod.QUANTILE)); + jComboBox_Method.setSelectedItem(classMethods_m.get(ClassificationMethod.JENKS)); - public GradientComboBox getjComboBox_Gradient() { - return jComboBox_Gradient; - } + // Listener + jComboBox_Method.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + final ClassificationMethod classMethod = getKeyByValue(classMethods_m, + jComboBox_Method.getSelectedItem().toString()); + if (classMethod == ClassificationMethod.GIVEN_INTERVAL) { + jLabel_Classes.setText(bundle + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.jLabel.classwidth")); + } else { + jLabel_Classes.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.jLabel.Classes")); + } + + } + }); + + // Color ramps + jComboBox_Gradient = GUIUtils.createStandardGradientComboBox(200, 18); + + final java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 4; + gridBagConstraints.gridwidth = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; + gridBagConstraints.weighty = 0.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + add(jComboBox_Gradient, gridBagConstraints); + + GUIUtils.addGradientComboBoxToList(jComboBox_Gradient); + + } + + private void rampAll() throws Exception { + + int classesCount = 5; + try { + classesCount = Integer.parseInt(jTextField_Classes.getText()); + } catch (final Exception ex) { + JOptionPane.showMessageDialog(this, + java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.numberOfClassesError"), + RasterStylesExtension.extensionName, JOptionPane.WARNING_MESSAGE); + return; + } + double classWidth = 0; + + double[] breaks = null; + final double[] rasterData = rasterImageLayer.getValues(0);// Utils.purgeNoData(rasterImageLayer.getActualRasterData(),rasterImageLayer); + + final ClassificationMethod classMethod = getKeyByValue(classMethods_m, + jComboBox_Method.getSelectedItem().toString()); + switch (classMethod) { + + case EQUAL_RANGE: + breaks = Classifier1D.classifyEqualRange(rasterData, classesCount); + break; + case GIVEN_INTERVAL: + breaks = RasterClassifier1D.classifyGivenInterval(rasterImageLayer, 0, classesCount); + classWidth = classesCount; + classesCount = breaks.length; + break; + case JENKS: + /* Sampling needed */ + final int top = 1000; + if (rasterData.length > top) { + final List<Double> sampled_l = new ArrayList<>(); + sampled_l.add((Double) minMaxValues.getMin()); + sampled_l.add((Double) minMaxValues.getMax()); + for (int v = 0; v < rasterData.length; v = v + (rasterData.length / top)) { + sampled_l.add(rasterData[v]); + } + final double[] sampledRasterData = new double[sampled_l.size()]; + for (int v = 0; v < sampled_l.size(); v++) { + sampledRasterData[v] = sampled_l.get(v); + } + breaks = Classifier1D.classifyNaturalBreaks(sampledRasterData, classesCount); + break; + } + + breaks = Classifier1D.classifyNaturalBreaks(rasterData, classesCount); + break; + case MAX_BREAKS: + breaks = Classifier1D.classifyMaxBreaks(rasterData, classesCount); + break; + case MEAN_STDEV: + breaks = Classifier1D.classifyMeanStandardDeviation(rasterData, classesCount); + break; + case QUANTILE: + breaks = Classifier1D.classifyEqualNumber(rasterData, classesCount); + break; + } + + if (breaks == null) { + throw new Exception(java.util.ResourceBundle + .getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.IntervalPanel.message.ErrorWhileClassifying")); + } + + final ColorMapEntry[] paletteColorMapEntries = ((GradientCanvas) jComboBox_Gradient.getSelectedItem()) + .getColorMapEntries(); + + /* Calculate colors */ + final ColorUtils colorUtils = new ColorUtils(); + final ColorMapEntry[] colorMapEntries = new ColorMapEntry[classesCount]; + final int colorsCount = paletteColorMapEntries.length; + + double minVal = (Double) minMaxValues.getMin(); + if (classMethod == ClassificationMethod.GIVEN_INTERVAL) { + minVal = Math.floor((Double) minMaxValues.getMin() / classWidth) * classWidth; + } + + colorMapEntries[0] = new ColorMapEntry(minVal, paletteColorMapEntries[0].getColor()); + for (int c = 1; c < classesCount; c++) { + + final double cellRelDistance = (double) c / (double) (classesCount - 1); + final double colorRelDistance = cellRelDistance * (colorsCount - 1); + + final Color startColor = paletteColorMapEntries[(int) Math.floor(colorRelDistance)].getColor(); + final Color endColor = paletteColorMapEntries[(int) Math.ceil(colorRelDistance)].getColor(); + + final Color color = colorUtils.interpolateColor(startColor, endColor, cellRelDistance); + colorMapEntries[c] = new ColorMapEntry(breaks[c - 1], color); + } + + updateTable(colorMapEntries); + + } + + private void addRow() { + colorsTablePanel.addRows(); + } + + private void removeRow() { + colorsTablePanel.removeRow(); + } + + private void rampColors() throws Exception { + if (colorsTablePanel.getSelectedRowsCount() != 2) { + JOptionPane.showMessageDialog(this, java.util.ResourceBundle + .getBundle("org/openjump/core/rasterimage/styler/resources/Bundle").getString( + "org.openjump.core.rasterimage.styler.ui.IntervalPanel.classMethods.EqualInterval.SelectTowRowsToRamp"), + RasterStylesExtension.extensionName, JOptionPane.WARNING_MESSAGE); + } + colorsTablePanel.rampColors(); + } + + public static <T, E> T getKeyByValue(Map<T, E> map, E value) { + for (final Entry<T, E> entry : map.entrySet()) { + if (value.equals(entry.getValue())) { + return entry.getKey(); + } + } + return null; + } + + public void plugRasterSymbology(RasterSymbology rasterSymbology) { + + updateTable(rasterSymbology.getColorMapEntries()); + + } + + private void updateTable(ColorMapEntry[] colorMapEntries) { + + /* Update table */ + if (colorsTablePanel == null) { + colorsTablePanel = new ColorsTablePanel(parent, TableType.INTERVALS, colorMapEntries, + rasterImageLayer.getNoDataValue(), false); + final GridBagLayout layout = (GridBagLayout) getLayout(); + final GridBagConstraints gbc = layout.getConstraints(jPanel_Table); + remove(jPanel_Table); + add(colorsTablePanel, gbc, 5); + validate(); + } else { + colorsTablePanel.updateTable(colorMapEntries); + } + + } + + public RasterSymbology getRasterStyler() throws Exception { + + final RasterSymbology rasterSymbolizer = new RasterSymbology(RasterSymbology.TYPE_INTERVALS); + for (final ColorMapEntry colorMapEntry : colorsTablePanel.getColorMapEntries()) { + rasterSymbolizer.addColorMapEntry(colorMapEntry.getUpperValue(), colorMapEntry.getColor()); + } + + return rasterSymbolizer; + } + + private final java.util.ResourceBundle bundle = java.util.ResourceBundle + .getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); + private final Component parent; + private final Map<ClassificationMethod, String> classMethods_m = new EnumMap<>( + ClassificationMethod.class); + private RasterImageLayer rasterImageLayer = null; + private ColorsTablePanel colorsTablePanel = null; + private final Range minMaxValues; + private GradientComboBox jComboBox_Gradient; + private boolean firstTimeShown = true; + + public enum ClassificationMethod { + + UNIQUE_VALUE, EQUAL_RANGE, GIVEN_INTERVAL, QUANTILE, MEAN_STDEV, MAX_BREAKS, JENKS; + + } + + public GradientComboBox getjComboBox_Gradient() { + return jComboBox_Gradient; + } } - Modified: core/trunk/src/org/openjump/core/rasterimage/styler/ui/RasterStylesDialog.java =================================================================== --- core/trunk/src/org/openjump/core/rasterimage/styler/ui/RasterStylesDialog.java 2021-12-08 05:39:14 UTC (rev 6681) +++ core/trunk/src/org/openjump/core/rasterimage/styler/ui/RasterStylesDialog.java 2021-12-08 05:43:53 UTC (rev 6682) @@ -1,6 +1,9 @@ package org.openjump.core.rasterimage.styler.ui; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; +import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.NoninvertibleTransformException; @@ -20,7 +23,6 @@ import org.openjump.core.rasterimage.Stats; import org.openjump.core.rasterimage.styler.RasterStylesExtension; import org.openjump.core.rasterimage.styler.SLDHandler; -import org.openjump.core.rasterimage.styler.Utils; import org.openjump.core.ui.io.file.FileNameExtensionFilter; import com.vividsolutions.jump.util.Range; @@ -27,8 +29,8 @@ import com.vividsolutions.jump.util.StringUtil; import com.vividsolutions.jump.workbench.Logger; import com.vividsolutions.jump.workbench.WorkbenchContext; +import com.vividsolutions.jump.workbench.model.LayerEventType; import com.vividsolutions.jump.workbench.model.Layerable; -import com.vividsolutions.jump.workbench.model.LayerEventType; import com.vividsolutions.jump.workbench.ui.ErrorDialog; import com.vividsolutions.jump.workbench.ui.renderer.style.ColorThemingStylePanel; import com.vividsolutions.jump.workbench.ui.style.StylePanel; @@ -41,584 +43,609 @@ */ public class RasterStylesDialog extends javax.swing.JDialog { - /** - * Creates new form SymbologyDialog - * @param parent parent frame - * @param modal true if Dialog is modal - * @param context Workbench Context - * @param rasterImageLayer one of the selected RasterImageLayer - * @param band raster band to symbolize - */ - public RasterStylesDialog(java.awt.Frame parent, boolean modal, - WorkbenchContext context, RasterImageLayer rasterImageLayer, int band) throws Exception { - - super(parent, modal); - this.context = context; - this.rasterImageLayer = rasterImageLayer; - this.band = band; - - try { - initComponents(); - fixComponents(); - } catch (Exception e) { - // survive exception during initialization - Logger.error(e); - context.getErrorHandler().handleThrowable(e); - } - } + /** + * Creates new form SymbologyDialog + * + * @param parent parent frame + * @param modal true if Dialog is modal + * @param context Workbench Context + * @param rasterImageLayer one of the selected RasterImageLayer + * @param band raster band to symbolize + */ + public RasterStylesDialog(java.awt.Frame parent, boolean modal, WorkbenchContext context, + RasterImageLayer rasterImageLayer, int band) throws Exception { + super(parent, modal); + this.context = context; + this.rasterImageLayer = rasterImageLayer; + this.band = band; - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - //@SuppressWarnings("unchecked") - private void initComponents() { - java.awt.GridBagConstraints gridBagConstraints; + try { + initComponents(); + fixComponents(); + } catch (final Exception e) { + // survive exception during initialization + Logger.error(e); + context.getErrorHandler().handleThrowable(e); + } + } - jTabbedPane_Type = new javax.swing.JTabbedPane(); - jPanel_OtherParams = new javax.swing.JPanel(); - jButton_NoDataValueColor = new javax.swing.JButton(); - jLabel_Transparency = new javax.swing.JLabel(); - jLabel_Transp_0 = new javax.swing.JLabel(); - jSlider_Transparency = new javax.swing.JSlider(); - jLabel_Transp_100 = new javax.swing.JLabel(); - jCheckBox_NoDataValue = new javax.swing.JCheckBox(); - jTextField_TranspValue = new javax.swing.JTextField(); - jButton_Load = new javax.swing.JButton(); - jButton_Save = new javax.swing.JButton(); - jButton_Cancel = new javax.swing.JButton(); - jButton_Restore = new javax.swing.JButton(); - jButton_Apply = new javax.swing.JButton(); - jButton_OK = new javax.swing.JButton(); + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // @SuppressWarnings("unchecked") + private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - setMinimumSize(new java.awt.Dimension(420, 450)); - getContentPane().setLayout(new java.awt.GridBagLayout()); + jTabbedPane_Type = new javax.swing.JTabbedPane(); + jPanel_OtherParams = new javax.swing.JPanel(); + jButton_NoDataValueColor = new javax.swing.JButton(); + jLabel_Transparency = new javax.swing.JLabel(); + jLabel_Transp_0 = new javax.swing.JLabel(); + jSlider_Transparency = new javax.swing.JSlider(); + jLabel_Transp_100 = new javax.swing.JLabel(); + jCheckBox_NoDataValue = new javax.swing.JCheckBox(); + jTextField_TranspValue = new javax.swing.JTextField(); + jButton_Load = new javax.swing.JButton(); + jButton_Save = new javax.swing.JButton(); + jButton_Cancel = new javax.swing.JButton(); + jButton_Restore = new javax.swing.JButton(); + jButton_Apply = new javax.swing.JButton(); + jButton_OK = new javax.swing.JButton(); - jTabbedPane_Type.setAlignmentX(1.0F); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridwidth = 6; - gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; - gridBagConstraints.weighty = 1.0; - getContentPane().add(jTabbedPane_Type, gridBagConstraints); + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setMinimumSize(new java.awt.Dimension(420, 450)); + getContentPane().setLayout(new java.awt.GridBagLayout()); - jPanel_OtherParams.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jPanel_OtherParams.setMinimumSize(new java.awt.Dimension(400, 100)); - jPanel_OtherParams.setPreferredSize(new java.awt.Dimension(400, 100)); - jPanel_OtherParams.setLayout(new java.awt.GridBagLayout()); + jTabbedPane_Type.setAlignmentX(1.0F); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridwidth = 6; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weighty = 1.0; + getContentPane().add(jTabbedPane_Type, gridBagConstraints); - jButton_NoDataValueColor.setBackground(new java.awt.Color(204, 204, 204)); - jButton_NoDataValueColor.setForeground(new java.awt.Color(204, 204, 204)); - java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); // NOI18N - jButton_NoDataValueColor.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_NoDataValueColor.text")); // NOI18N - jButton_NoDataValueColor.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jButton_NoDataValueColor.setContentAreaFilled(false); - jButton_NoDataValueColor.setDoubleBuffered(true); - jButton_NoDataValueColor.setMaximumSize(new java.awt.Dimension(40, 25)); - jButton_NoDataValueColor.setMinimumSize(new java.awt.Dimension(40, 25)); - jButton_NoDataValueColor.setOpaque(true); - jButton_NoDataValueColor.setPreferredSize(new java.awt.Dimension(40, 25)); - jButton_NoDataValueColor.addActionListener(this::jButton_NoDataValueColorActionPerformed); + jPanel_OtherParams.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jPanel_OtherParams.setMinimumSize(new java.awt.Dimension(400, 100)); + jPanel_OtherParams.setPreferredSize(new java.awt.Dimension(400, 100)); + jPanel_OtherParams.setLayout(new java.awt.GridBagLayout()); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 0; - gridBagConstraints.gridwidth = 2; - gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(6, 6, 6, 6); - jPanel_OtherParams.add(jButton_NoDataValueColor, gridBagConstraints); + jButton_NoDataValueColor.setBackground(new java.awt.Color(204, 204, 204)); + jButton_NoDataValueColor.setForeground(new java.awt.Color(204, 204, 204)); + final java.util.ResourceBundle bundle = java.util.ResourceBundle + .getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); // NOI18N + jButton_NoDataValueColor.setText(bundle + .getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_NoDataValueColor.text")); // NOI18N + jButton_NoDataValueColor.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jButton_NoDataValueColor.setContentAreaFilled(false); + jButton_NoDataValueColor.setDoubleBuffered(true); + jButton_NoDataValueColor.setMaximumSize(new java.awt.Dimension(40, 25)); + jButton_NoDataValueColor.setMinimumSize(new java.awt.Dimension(40, 25)); + jButton_NoDataValueColor.setOpaque(true); + jButton_NoDataValueColor.setPreferredSize(new java.awt.Dimension(40, 25)); + jButton_NoDataValueColor.addActionListener(this::jButton_NoDataValueColorActionPerformed); - jLabel_Transparency.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jLabel_Transparency.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 1; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5); - jPanel_OtherParams.add(jLabel_Transparency, gridBagConstraints); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 0; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(6, 6, 6, 6); + jPanel_OtherParams.add(jButton_NoDataValueColor, gridBagConstraints); - jLabel_Transp_0.setBackground(new java.awt.Color(0, 0, 0)); - jLabel_Transp_0.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jLabel_Transp_0.text")); // NOI18N - jLabel_Transp_0.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jLabel_Transp_0.setMaximumSize(new java.awt.Dimension(10, 10)); - jLabel_Transp_0.setMinimumSize(new java.awt.Dimension(10, 10)); - jLabel_Transp_0.setOpaque(true); - jLabel_Transp_0.setPreferredSize(new java.awt.Dimension(10, 10)); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 1; - gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); - jPanel_OtherParams.add(jLabel_Transp_0, gridBagConstraints); + jLabel_Transparency.setText(bundle + .getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jLabel_Transparency.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5); + jPanel_OtherParams.add(jLabel_Transparency, gridBagConstraints); - jSlider_Transparency.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 5)); // NOI18N - jSlider_Transparency.setForeground(new java.awt.Color(102, 102, 102)); - jSlider_Transparency.setMajorTickSpacing(20); - jSlider_Transparency.setMinorTickSpacing(5); - jSlider_Transparency.setPaintTicks(true); - jSlider_Transparency.setSnapToTicks(true); - jSlider_Transparency.setValue(0); - jSlider_Transparency.setMinimumSize(new java.awt.Dimension(150, 31)); - jSlider_Transparency.setPreferredSize(new java.awt.Dimension(150, 31)); - jSlider_Transparency.addChangeListener(this::jSlider_TransparencyStateChanged); + jLabel_Transp_0.setBackground(new java.awt.Color(0, 0, 0)); + jLabel_Transp_0.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jLabel_Transp_0.text")); // NOI18N + jLabel_Transp_0.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jLabel_Transp_0.setMaximumSize(new java.awt.Dimension(10, 10)); + jLabel_Transp_0.setMinimumSize(new java.awt.Dimension(10, 10)); + jLabel_Transp_0.setOpaque(true); + jLabel_Transp_0.setPreferredSize(new java.awt.Dimension(10, 10)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); + jPanel_OtherParams.add(jLabel_Transp_0, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 1; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; - gridBagConstraints.weightx = 0.5; - gridBagConstraints.insets = new java.awt.Insets(9, 0, 0, 0); - jPanel_OtherParams.add(jSlider_Transparency, gridBagConstraints); + jSlider_Transparency.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 5)); // NOI18N + jSlider_Transparency.setForeground(new java.awt.Color(102, 102, 102)); + jSlider_Transparency.setMajorTickSpacing(20); + jSlider_Transparency.setMinorTickSpacing(5); + jSlider_Transparency.setPaintTicks(true); + jSlider_Transparency.setSnapToTicks(true); + jSlider_Transparency.setValue(0); + jSlider_Transparency.setMinimumSize(new java.awt.Dimension(150, 31)); + jSlider_Transparency.setPreferredSize(new java.awt.Dimension(150, 31)); + jSlider_Transparency.addChangeListener(this::jSlider_TransparencyStateChanged); - jLabel_Transp_100.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jLabel_Transp_100.text")); // NOI18N - jLabel_Transp_100.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jLabel_Transp_100.setMaximumSize(new java.awt.Dimension(10, 10)); - jLabel_Transp_100.setMinimumSize(new java.awt.Dimension(10, 10)); - jLabel_Transp_100.setPreferredSize(new java.awt.Dimension(10, 10)); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 3; - gridBagConstraints.gridy = 1; - gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2); - jPanel_OtherParams.add(jLabel_Transp_100, gridBagConstraints); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; + gridBagConstraints.weightx = 0.5; + gridBagConstraints.insets = new java.awt.Insets(9, 0, 0, 0); + jPanel_OtherParams.add(jSlider_Transparency, gridBagConstraints); - jCheckBox_NoDataValue.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jCheckBox_NoDataValue.text")); // NOI18N - jCheckBox_NoDataValue.setMaximumSize(new java.awt.Dimension(70, 23)); - jCheckBox_NoDataValue.setMinimumSize(new java.awt.Dimension(70, 23)); - jCheckBox_NoDataValue.addActionListener(this::jCheckBox_NoDataValueActionPerformed); + jLabel_Transp_100.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jLabel_Transp_100.text")); // NOI18N + jLabel_Transp_100.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jLabel_Transp_100.setMaximumSize(new java.awt.Dimension(10, 10)); + jLabel_Transp_100.setMinimumSize(new java.awt.Dimension(10, 10)); + jLabel_Transp_100.setPreferredSize(new java.awt.Dimension(10, 10)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 3; + gridBagConstraints.gridy = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2); + jPanel_OtherParams.add(jLabel_Transp_100, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 0; - jPanel_OtherParams.add(jCheckBox_NoDataValue, gridBagConstraints); + jCheckBox_NoDataValue.setText(bundle + .getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jCheckBox_NoDataValue.text")); // NOI18N + jCheckBox_NoDataValue.setMaximumSize(new java.awt.Dimension(70, 23)); + jCheckBox_NoDataValue.setMinimumSize(new java.awt.Dimension(70, 23)); + jCheckBox_NoDataValue.addActionListener(this::jCheckBox_NoDataValueActionPerformed); - jTextField_TranspValue.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jTextField_TranspValue.text")); // NOI18N - jTextField_TranspValue.setMinimumSize(new java.awt.Dimension(40, 20)); - jTextField_TranspValue.setPreferredSize(new java.awt.Dimension(40, 20)); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 4; - gridBagConstraints.gridy = 1; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 20); - jPanel_OtherParams.add(jTextField_TranspValue, gridBagConstraints); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + jPanel_OtherParams.add(jCheckBox_NoDataValue, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 1; - gridBagConstraints.gridwidth = 6; - getContentPane().add(jPanel_OtherParams, gridBagConstraints); + jTextField_TranspValue.setText(bundle + .getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jTextField_TranspValue.text")); // NOI18N + jTextField_TranspValue.setMinimumSize(new java.awt.Dimension(40, 20)); + jTextField_TranspValue.setPreferredSize(new java.awt.Dimension(40, 20)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 1; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 20); + jPanel_OtherParams.add(jTextField_TranspValue, gridBagConstraints); - jButton_Load.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Load.text")); // NOI18N - jButton_Load.addActionListener(this::jButton_LoadActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.gridwidth = 6; + getContentPane().add(jPanel_OtherParams, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 2; - getContentPane().add(jButton_Load, gridBagConstraints); + jButton_Load.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Load.text")); // NOI18N + jButton_Load.addActionListener(this::jButton_LoadActionPerformed); - jButton_Save.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Save.text")); // NOI18N - jButton_Save.addActionListener(this::jButton_SaveActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 2; + getContentPane().add(jButton_Load, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 2; - getContentPane().add(jButton_Save, gridBagConstraints); + jButton_Save.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Save.text")); // NOI18N + jButton_Save.addActionListener(this::jButton_SaveActionPerformed); - jButton_Cancel.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Cancel.text")); // NOI18N - jButton_Cancel.addActionListener(this::jButton_CancelActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 2; + getContentPane().add(jButton_Save, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 2; - gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 20, 5, 10); - getContentPane().add(jButton_Cancel, gridBagConstraints); + jButton_Cancel.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Cancel.text")); // NOI18N + jButton_Cancel.addActionListener(this::jButton_CancelActionPerformed); - jButton_Restore.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Restore.text")); // NOI18N - jButton_Restore.addActionListener(this::jButton_RestoreActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 20, 5, 10); + getContentPane().add(jButton_Cancel, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 3; - gridBagConstraints.gridy = 2; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - getContentPane().add(jButton_Restore, gridBagConstraints); + jButton_Restore.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Restore.text")); // NOI18N + jButton_Restore.addActionListener(this::jButton_RestoreActionPerformed); - jButton_Apply.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Apply.text")); // NOI18N - jButton_Apply.addActionListener(this::jButton_ApplyActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 3; + gridBagConstraints.gridy = 2; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + getContentPane().add(jButton_Restore, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 4; - gridBagConstraints.gridy = 2; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - getContentPane().add(jButton_Apply, gridBagConstraints); + jButton_Apply.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_Apply.text")); // NOI18N + jButton_Apply.addActionListener(this::jButton_ApplyActionPerformed); - jButton_OK.setText(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_OK.text")); // NOI18N - jButton_OK.addActionListener(this::jButton_OKActionPerformed); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 2; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + getContentPane().add(jButton_Apply, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 5; - gridBagConstraints.gridy = 2; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - getContentPane().add(jButton_OK, gridBagConstraints); + jButton_OK.setText( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.jButton_OK.text")); // NOI18N + jButton_OK.addActionListener(this::jButton_OKActionPerformed); - pack(); - } + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 5; + gridBagConstraints.gridy = 2; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + getContentPane().add(jButton_OK, gridBagConstraints); - private void jButton_NoDataValueColorActionPerformed(java.awt.event.ActionEvent evt) { + pack(); + } - if(jCheckBox_NoDataValue.isSelected()){ - noDataColor = JColorChooser.showDialog( - this, - ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") - .getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.chooseNoDataColor"), - jButton_NoDataValueColor.getBackground() - ); - - if(noDataColor!=null){ - jButton_NoDataValueColor.setBackground(noDataColor); - } - } - - } + private void jButton_NoDataValueColorActionPerformed(java.awt.event.ActionEvent evt) { - private void jCheckBox_NoDataValueActionPerformed(java.awt.event.ActionEvent evt) { - - jButton_NoDataValueColor.setEnabled(jCheckBox_NoDataValue.isSelected()); - - } + if (jCheckBox_NoDataValue.isSelected()) { + noDataColor = JColorChooser.showDialog(this, + ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle") + .getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.chooseNoDataColor"), + jButton_NoDataValueColor.getBackground()); - private void jButton_LoadActionPerformed(java.awt.event.ActionEvent evt) { - - loadSld(); - - } + if (noDataColor != null) { + jButton_NoDataValueColor.setBackground(noDataColor); + } + } - private void jButton_SaveActionPerformed(java.awt.event.ActionEvent evt) { - - saveSld(); - - } + } - private void jButton_CancelActionPerformed(java.awt.event.ActionEvent evt) { - - closeDialog(); - - } + private void jCheckBox_NoDataValueActionPerformed(java.awt.event.ActionEvent evt) { - private void jButton_ApplyActionPerformed(java.awt.event.ActionEvent evt) { - - //Update raster image - try { - updateRasterImageLayer(); - } catch (Exception ex) { - Logger.error(ex); - } - - } + jButton_NoDataValueColor.setEnabled(jCheckBox_NoDataValue.isSelected()); - private void jSlider_TransparencyStateChanged(javax.swing.event.ChangeEvent evt) { + } - jTextField_TranspValue.setText(Integer.toString(jSlider_Transparency.getValue())); - - } + private void jButton_LoadActionPerformed(java.awt.event.ActionEvent evt) { - private void jButton_RestoreActionPerformed(java.awt.event.ActionEvent evt) { - - try { - Collection<Layerable> layerables = context.getLayerableNamePanel().getSelectedLayerables(); - for (Layerable lyr : layerables) { - jButton_NoDataValueColor.setBackground(new java.awt.Color(204, 204, 204)); - jButton_NoDataValueColor.setForeground(new java.awt.Color(204, 204, 204)); - jSlider_Transparency.setValue(0); - jTextField_TranspValue.setText("0"); - jCheckBox_NoDataValue.setSelected(false); - stretchedPanel.reset(); - intervalPanel.reset(); - singleValuesPanel.reset(); - finalRasterSymbolizer.setColorMapType(RasterSymbology.TYPE_RAMP); - if (lyr instanceof RasterImageLayer) restoreToOriginal((RasterImageLayer)lyr); - } - } catch (Exception ex) { - Logger.error(ex); - } - - } + loadSld(); - private void jButton_OKActionPerformed(java.awt.event.ActionEvent evt) { - - //Update raster image and close - try { - updateRasterImageLayer(); - closeDialog(); - } catch (Exception ex) { - Logger.error( ex); - } - - } - - private void fixComponents() throws Exception{ - - this.setTitle(RasterStylesExtension.extensionName); - - /* Transparency text field */ - jTextField_TranspValue.setInputVerifier(verifier); - jTextField_TranspValue.addActionListener(verifier); - jTextField_TranspValue.setText(Integer.toString(jSlider_Transparency.getValue())); - - Stats stats = rasterImageLayer.getMetadata().getStats(); - Range minMaxValues = new Range(stats.getMin(band), true, stats.getMax(band), true); + } - stretchedPanel = new StretchedPanel(minMaxValues); - intervalPanel = new IntervalPanel( - this, - rasterImageLayer, - minMaxValues); - singleValuesPanel = new SingleValuesPanel(this, Utils.purgeNoData(rasterImageLayer.getActualRasterData(), rasterImageLayer), rasterImageLayer); - - if (stats.getMin(band) == stats.getMax(band)) { - final DummyPanel pan = new DummyPanel("No stretched classification available, this raster has only one value: " + stats.getMax(band)); - jTabbedPane_Type.addTab(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabStretched"), pan); - jTabbedPane_Type.addTab(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabIntervals"), intervalPanel); - for (final Component c2 : intervalPanel.getComponents()) { - c2.setEnabled(false); - } - } else { - jTabbedPane_Type.addTab(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabStretched"), stretchedPanel); - jTabbedPane_Type.addTab(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabIntervals"), intervalPanel); - } - jTabbedPane_Type.addTab(bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabSingleValues"), singleValuesPanel); - pack(); - - /* Startup symbology */ - if(rasterImageLayer.getSymbology() != null) { - - this.finalRasterSymbolizer = rasterImageLayer.getSymbology(); - updateGUI(); - - } - - //add RasterSymbolizer Object in BlackBoard, the key is the name of raster plus suffixBBoardKey var. - String bboardKey = GUIUtils.getBBKey(String.valueOf(rasterImageLayer.getUUID())); - context.getBlackboard().put(bboardKey, this); - - } - - public void updateRasterImageLayer() throws Exception { - - if(jTabbedPane_Type.getSelectedComponent() instanceof StretchedPanel) { - finalRasterSymbolizer = stretchedPanel.getRasterStyler(); - } else if(jTabbedPane_Type.getSelectedComponent() instanceof IntervalPanel) { - finalRasterSymbolizer = intervalPanel.getRasterStyler(); - } else if(jTabbedPane_Type.getSelectedComponent() instanceof SingleValuesPanel) { - finalRasterSymbolizer = singleValuesPanel.getRasterStyler(); - - } - - finalRasterSymbolizer.setTransparency(GUIUtils.getAlpha_DecimalRange(Integer.parseInt(jTextField_TranspValue.getText()))); - - if(jCheckBox_NoDataValue.isSelected()){ - finalRasterSymbolizer.addColorMapEntry(rasterImageLayer.getNoDataValue(), jButton_NoDataValueColor.getBackground()); - } else { - finalRasterSymbolizer.addColorMapEntry(rasterImageLayer.getNoDataValue(), null); - } + private void jButton_SaveActionPerformed(java.awt.event.ActionEvent evt) { - Collection<Layerable> layerables = context.getLayerableNamePanel().getSelectedLayerables(); - for (Layerable lyr : layerables) { - if (lyr instanceof RasterImageLayer) apply((RasterImageLayer)lyr); - } + saveSld(); - } + } - public void apply(RasterImageLayer rasterImageLayer) throws Exception { - rasterImageLayer.setSymbology(finalRasterSymbolizer); - context.getLayerManager().fireLayerChanged(rasterImageLayer, LayerEventType.APPEARANCE_CHANGED); - } + private void jButton_CancelActionPerformed(java.awt.event.ActionEvent evt) { - private void restoreToOriginal(RasterImageLayer rasterImageLayer) throws NoninvertibleTransformException { - rasterImageLayer.setSymbology(null); - } - - private void saveSld() { - - if(finalRasterSymbolizer == null) { - return; - } - - JFileChooser chooser = new JFileChooser(PirolPlugInSettings.configDirectory()); - String extension = "sld"; - FileNameExtensionFilter filter = new FileNameExtensionFilter( - bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.fileChooser.sld"), extension); - chooser.setFileFilter(filter); - int returnVal = chooser.showSaveDialog(this); - - if (returnVal == JFileChooser.APPROVE_OPTION) { - - try { - File sldFile = chooser.getSelectedFile(); - if(!sldFile.getAbsolutePath().endsWith(extension)){ - sldFile = new File(sldFile + "." + extension); - } - - SLDHandler.write(finalRasterSymbolizer, null, sldFile); - } catch (Exception ex) { - ErrorDialog.show(this, StringUtil.toFriendlyName( - ex.getClass().getName()), - ex.toString(), - StringUtil.stackTrace(ex)); - } - } - - } - - private void loadSld() { - - JFileChooser chooser = new JFileChooser(PirolPlugInSettings.configDirectory()); - FileNameExtensionFilter filter = new FileNameExtensionFilter( - bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.fileChooser.sld"), "sld"); - chooser.setFileFilter(filter); - chooser.setMultiSelectionEnabled(false); - - int returnVal = chooser.showOpenDialog(this); - - if (returnVal == JFileChooser.APPROVE_OPTION) { - - try { - File sldFile = chooser.getSelectedFile(); - finalRasterSymbolizer = SLDHandler.read(sldFile); + closeDialog(); - // Update GUI - updateGUI(); - - } catch (Exception ex) { - ErrorDialog.show(this, StringUtil.toFriendlyName( - ex.getClass().getName()), - ex.toString(), - StringUtil.stackTrace(ex)); - } - } - - } - - private void closeDialog() { - - GUIUtils.clearRasterStylerFromBlackBoard(context); - setVisible(false); - - } - - public double getNoDataValue() { - return rasterImageLayer.getNoDataValue(); - } - - private void updateGUI() throws Exception { - - if(finalRasterSymbolizer.getColorMapType().equals(RasterSymbology.TYPE_RAMP)) { - stretchedPanel.plugRasterSymbology(finalRasterSymbolizer); - jTabbedPane_Type.setSelectedIndex(0); - } else if(finalRasterSymbolizer.getColorMapType().equals(RasterSymbology.TYPE_INTERVALS)) { - intervalPanel.plugRasterSymbology(finalRasterSymbolizer); - jTabbedPane_Type.setSelectedIndex(1); - } else if(finalRasterSymbolizer.getColorMapType().equals(RasterSymbology.TYPE_SINGLE)) { - singleValuesPanel.plugRasterSymbology(finalRasterSymbolizer); - jTabbedPane_Type.setSelectedIndex(2); - } - } + } - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton jButton_Apply; - private javax.swing.JButton jButton_Cancel; - private javax.swing.JButton jButton_Load; - private javax.swing.JButton jButton_NoDataValueColor; - private javax.swing.JButton jButton_OK; - private javax.swing.JButton jButton_Restore; - private javax.swing.JButton jButton_Save; - private javax.swing.JCheckBox jCheckBox_NoDataValue; - private javax.swing.JLabel jLabel_Transp_0; - private javax.swing.JLabel jLabel_Transp_100; - private javax.swing.JLabel jLabel_Transparency; - private javax.swing.JPanel jPanel_OtherParams; - private javax.swing.JSlider jSlider_Transparency; - private javax.swing.JTabbedPane jTabbedPane_Type; - private javax.swing.JTextField jTextField_TranspValue; - // End of variables declaration//GEN-END:variables + private void jButton_ApplyActionPerformed(java.awt.event.ActionEvent evt) { - private Color noDataColor; - java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); // NOI18N - private final WorkbenchContext context; - private final RasterImageLayer rasterImageLayer; - private final int band; - private StretchedPanel stretchedPanel; - private IntervalPanel intervalPanel; - private SingleValuesPanel singleValuesPanel; - - private final MyVerifier verifier = new MyVerifier(); - private RasterSymbology finalRasterSymbolizer; + // Update raster image + try { + updateRasterImageLayer(); + } catch (final Exception ex) { + Logger.error(ex); + } - public RasterSymbology getFinalRasterSymbolizer() { - return finalRasterSymbolizer; - } - - class MyVerifier extends InputVerifier - implements ActionListener { + } - @Override - public boolean verify(JComponent input) { - - String value = jTextField_TranspValue.getText(); - String sliderValue = Integer.toString(jSlider_Transparency.getValue()); - if(value == null || value.equals("")){ //NOI18N - jTextField_TranspValue.setText(sliderValue); - } else { - try { - int number = Integer.parseInt(value); - if(number < 0 || number > 100) { - jTextField_TranspValue.setText(sliderValue); - } else { - jSlider_Transparency.setValue(number); - } - } catch(NumberFormatException ex) { - jTextField_TranspValue.setText(sliderValue); - } - } - return true; - } + private void jSlider_TransparencyStateChanged(javax.swing.event.ChangeEvent evt) { - @Override - public void actionPerformed(ActionEvent e) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N - } - - } - - private class DummyPanel extends JPanel implements StylePanel { + jTextField_TranspValue.setText(Integer.toString(jSlider_Transparency.getValue())); - private static final long serialVersionUID = 2217457292163045134L; + } - private DummyPanel(String label) { - // GridBagLayout so it gets centered. [Jon Aquino] - super(new GridBagLayout()); - add(new JLabel(label)); - } + private void jButton_RestoreActionPerformed(java.awt.event.ActionEvent evt) { - @Override - public String getTitle() { - return ColorThemingStylePanel.TITLE; - } + try { + final Collection<Layerable> layerables = context.getLayerableNamePanel().getSelectedLayerables(); + for (final Layerable lyr : layerables) { + jButton_NoDataValueColor.setBackground(new java.awt.Color(204, 204, 204)); + jButton_NoDataValueColor.setForeground(new java.awt.Color(204, 204, 204)); + jSlider_Transparency.setValue(0); + jTextField_TranspValue.setText("0"); + jCheckBox_NoDataValue.setSelected(false); + stretchedPanel.reset(); + intervalPanel.reset(); + singleValuesPanel.reset(); + finalRasterSymbolizer.setColorMapType(RasterSymbology.TYPE_RAMP); + if (lyr instanceof RasterImageLayer) { + restoreToOriginal((RasterImageLayer) lyr); + } + } + } catch (final Exception ex) { + Logger.error(ex); + } - @Override - public void updateStyles() { - // unused but defined in the interface - } + } - @Override - public String validateInput() { - return null; - } - } + private void jButton_OKActionPerformed(java.awt.event.ActionEvent evt) { + + // Update raster image and close + try { + updateRasterImageLayer(); + closeDialog(); + } catch (final Exception ex) { + Logger.error(ex); + } + + } + + private void fixComponents() throws Exception { + + this.setTitle(RasterStylesExtension.extensionName); + + /* Transparency text field */ + jTextField_TranspValue.setInputVerifier(verifier); + jTextField_TranspValue.addActionListener(verifier); + jTextField_TranspValue.setText(Integer.toString(jSlider_Transparency.getValue())); + + final Stats stats = rasterImageLayer.getMetadata().getStats(); + final Range minMaxValues = new Range(stats.getMin(band), true, stats.getMax(band), true); + + stretchedPanel = new StretchedPanel(minMaxValues); + intervalPanel = new IntervalPanel(this, rasterImageLayer, minMaxValues); + singleValuesPanel = new SingleValuesPanel(this, rasterImageLayer.getValues(0), rasterImageLayer);// Utils.purgeNoData(rasterImageLayer.getActualRasterData(), + // rasterImageLayer), + // rasterImageLayer); + + if (stats.getMin(band) == stats.getMax(band)) { + final DummyPanel pan = new DummyPanel( + "No stretched classification available, this raster has only one value: " + stats.getMax(band)); + jTabbedPane_Type.addTab( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabStretched"), pan); + jTabbedPane_Type.addTab( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabIntervals"), + intervalPanel); + for (final Component c2 : intervalPanel.getComponents()) { + c2.setEnabled(false); + } + } else { + jTabbedPane_Type.addTab( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabStretched"), + stretchedPanel); + jTabbedPane_Type.addTab( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabIntervals"), + intervalPanel); + } + jTabbedPane_Type.addTab( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.tabSingleValues"), + singleValuesPanel); + pack(); + + /* Startup symbology */ + if (rasterImageLayer.getSymbology() != null) { + + this.finalRasterSymbolizer = rasterImageLayer.getSymbology(); + updateGUI(); + + } + + // add RasterSymbolizer Object in BlackBoard, the key is the name of raster plus + // suffixBBoardKey var. + final String bboardKey = GUIUtils.getBBKey(String.valueOf(rasterImageLayer.getUUID())); + context.getBlackboard().put(bboardKey, this); + + } + + public void updateRasterImageLayer() throws Exception { + + if (jTabbedPane_Type.getSelectedComponent() instanceof StretchedPanel) { + finalRasterSymbolizer = stretchedPanel.getRasterStyler(); + } else if (jTabbedPane_Type.getSelectedComponent() instanceof IntervalPanel) { + finalRasterSymbolizer = intervalPanel.getRasterStyler(); + } else if (jTabbedPane_Type.getSelectedComponent() instanceof SingleValuesPanel) { + finalRasterSymbolizer = singleValuesPanel.getRasterStyler(); + + } + + finalRasterSymbolizer + .setTransparency(GUIUtils.getAlpha_DecimalRange(Integer.parseInt(jTextField_TranspValue.getText()))); + + if (jCheckBox_NoDataValue.isSelected()) { + finalRasterSymbolizer.addColorMapEntry(rasterImageLayer.getNoDataValue(), + jButton_NoDataValueColor.getBackground()); + } else { + finalRasterSymbolizer.addColorMapEntry(rasterImageLayer.getNoDataValue(), null); + } + + final Collection<Layerable> layerables = context.getLayerableNamePanel().getSelectedLayerables(); + for (final Layerable lyr : layerables) { + if (lyr instanceof RasterImageLayer) { + apply((RasterImageLayer) lyr); + } + } + + } + + public void apply(RasterImageLayer rasterImageLayer) throws Exception { + rasterImageLayer.setSymbology(finalRasterSymbolizer); + context.getLayerManager().fireLayerChanged(rasterImageLayer, LayerEventType.APPEARANCE_CHANGED); + } + + private void restoreToOriginal(RasterImageLayer rasterImageLayer) throws NoninvertibleTransformException { + rasterImageLayer.setSymbology(null); + } + + private void saveSld() { + + if (finalRasterSymbolizer == null) { + return; + } + + final JFileChooser chooser = new JFileChooser(PirolPlugInSettings.configDirectory()); + final String extension = "sld"; + final FileNameExtensionFilter filter = new FileNameExtensionFilter( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.fileChooser.sld"), + extension); + chooser.setFileFilter(filter); + final int returnVal = chooser.showSaveDialog(this); + + if (returnVal == JFileChooser.APPROVE_OPTION) { + + try { + File sldFile = chooser.getSelectedFile(); + if (!sldFile.getAbsolutePath().endsWith(extension)) { + sldFile = new File(sldFile + "." + extension); + } + + SLDHandler.write(finalRasterSymbolizer, null, sldFile); + } catch (final Exception ex) { + ErrorDialog.show(this, StringUtil.toFriendlyName(ex.getClass().getName()), ex.toString(), + StringUtil.stackTrace(ex)); + } + } + + } + + private void loadSld() { + + final JFileChooser chooser = new JFileChooser(PirolPlugInSettings.configDirectory()); + final FileNameExtensionFilter filter = new FileNameExtensionFilter( + bundle.getString("org.openjump.core.rasterimage.styler.ui.RasterStylesDialog.fileChooser.sld"), "sld"); + chooser.setFileFilter(filter); + chooser.setMultiSelectionEnabled(false); + + final int returnVal = chooser.showOpenDialog(this); + + if (returnVal == JFileChooser.APPROVE_OPTION) { + + try { + final File sldFile = chooser.getSelectedFile(); + finalRasterSymbolizer = SLDHandler.read(sldFile); + + // Update GUI + updateGUI(); + + } catch (final Exception ex) { + ErrorDialog.show(this, StringUtil.toFriendlyName(ex.getClass().getName()), ex.toString(), + StringUtil.stackTrace(ex)); + } + } + + } + + private void closeDialog() { + + GUIUtils.clearRasterStylerFromBlackBoard(context); + setVisible(false); + + } + + public double getNoDataValue() { + return rasterImageLayer.getNoDataValue(); + } + + private void updateGUI() throws Exception { + + if (finalRasterSymbolizer.getColorMapType().equals(RasterSymbology.TYPE_RAMP)) { + stretchedPanel.plugRasterSymbology(finalRasterSymbolizer); + jTabbedPane_Type.setSelectedIndex(0); + } else if (finalRasterSymbolizer.getColorMapType().equals(RasterSymbology.TYPE_INTERVALS)) { + intervalPanel.plugRasterSymbology(finalRasterSymbolizer); + jTabbedPane_Type.setSelectedIndex(1); + } else if (finalRasterSymbolizer.getColorMapType().equals(RasterSymbology.TYPE_SINGLE)) { + singleValuesPanel.plugRasterSymbology(finalRasterSymbolizer); + jTabbedPane_Type.setSelectedIndex(2); + } + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton_Apply; + private javax.swing.JButton jButton_Cancel; + private javax.swing.JButton jButton_Load; + private javax.swing.JButton jButton_NoDataValueColor; + private javax.swing.JButton jButton_OK; + private javax.swing.JButton jButton_Restore; + private javax.swing.JButton jButton_Save; + private javax.swing.JCheckBox jCheckBox_NoDataValue; + private javax.swing.JLabel jLabel_Transp_0; + private javax.swing.JLabel jLabel_Transp_100; + private javax.swing.JLabel jLabel_Transparency; + private javax.swing.JPanel jPanel_OtherParams; + private javax.swing.JSlider jSlider_Transparency; + private javax.swing.JTabbedPane jTabbedPane_Type; + private javax.swing.JTextField jTextField_TranspValue; + // End of variables declaration//GEN-END:variables + + private Color noDataColor; + java.util.ResourceBundle bundle = java.util.ResourceBundle + .getBundle("org/openjump/core/rasterimage/styler/resources/Bundle"); // NOI18N + private final WorkbenchContext context; + private final RasterImageLayer rasterImageLayer; + private final int band; + private StretchedPanel stretchedPanel; + private IntervalPanel intervalPanel; + private SingleValuesPanel singleValuesPanel; + + private final MyVerifier verifier = new MyVerifier(); + private RasterSymbology finalRasterSymbolizer; + + public RasterSymbology getFinalRasterSymbolizer() { + return finalRasterSymbolizer; + } + + class MyVerifier extends InputVerifier implements ActionListener { + + @Override + public boolean verify(JComponent input) { + + final String value = jTextField_TranspValue.getText(); + final String sliderValue = Integer.toString(jSlider_Transparency.getValue()); + if (value == null || value.equals("")) { // NOI18N + jTextField_TranspValue.setText(sliderValue); + } else { + try { + final int number = Integer.parseInt(value); + if (number < 0 || number > 100) { + jTextField_TranspValue.setText(sliderValue); + } else { + jSlider_Transparency.setValue(number); + } + } catch (final NumberFormatException ex) { + jTextField_TranspValue.setText(sliderValue); + } + } + return true; + } + + @Override + public void actionPerformed(ActionEvent e) { + throw new UnsupportedOperationException("Not supported yet."); // To change body of generated methods, + // choose Tools | Templates. //NOI18N + } + + } + + private class DummyPanel extends JPanel implements StylePanel { + + private static final long serialVersionUID = 2217457292163045134L; + + private DummyPanel(String label) { + // GridBagLayout so it gets centered. [Jon Aquino] + super(new GridBagLayout()); + add(new JLabel(label)); + } + + @Override + public String getTitle() { + return ColorThemingStylePanel.TITLE; + } + + @Override + public void updateStyles() { + // unused but defined in the interface + } + + @Override + public String validateInput() { + return null; + } + } } _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel