/* Copyright 2008-2010 Gephi Authors : Mathieu Bastian <mathieu.bastian@gephi.org> Website : http://www.gephi.org This file is part of Gephi. Gephi is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Gephi 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Gephi. If not, see <http://www.gnu.org/licenses/>. */ package org.gephi.visualization.options; import com.connectina.swing.fontchooser.JFontChooser; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.gephi.ui.utils.ColorUtils; import org.gephi.ui.utils.FontUtils; import org.gephi.visualization.apiimpl.VizConfig; import org.openide.util.NbPreferences; import org.openide.windows.WindowManager; final class DefaultPanel extends javax.swing.JPanel { private final DefaultOptionsPanelController controller; //Settings private Font nodeFont; private Font edgeFont; DefaultPanel(DefaultOptionsPanelController controller) { this.controller = controller; initComponents(); nodeFontButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Font font = JFontChooser.showDialog(WindowManager.getDefault().getMainWindow(), nodeFont); if (font != null) { nodeFont = font; nodeFontButton.setText(nodeFont.getFontName() + ", " + nodeFont.getSize()); } } }); edgeFontButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Font font = JFontChooser.showDialog(WindowManager.getDefault().getMainWindow(), edgeFont); if (font != null) { edgeFont = font; edgeFontButton.setText(edgeFont.getFontName() + ", " + edgeFont.getSize()); } } }); } /** 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. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { titleDesign = new org.jdesktop.swingx.JXTitledSeparator(); titleLabel = new org.jdesktop.swingx.JXTitledSeparator(); labelDefaultSettings = new javax.swing.JLabel(); use3dCheckbox = new javax.swing.JCheckBox(); autoSelectNeighborCheckbox = new javax.swing.JCheckBox(); highlightCheckbox = new javax.swing.JCheckBox(); labelColor = new javax.swing.JLabel(); nodeLabelColorButton = new net.java.dev.colorchooser.ColorChooser(); labelNodeLabelColor = new javax.swing.JLabel(); labelEdgeLabelColor = new javax.swing.JLabel(); edgeLabelColorButton = new net.java.dev.colorchooser.ColorChooser(); labelFont = new javax.swing.JLabel(); nodeFontButton = new javax.swing.JButton(); labelNodeFont = new javax.swing.JLabel(); labelEdgeFont = new javax.swing.JLabel(); edgeFontButton = new javax.swing.JButton(); labelBackground = new javax.swing.JLabel(); labelBackgroundPanel = new javax.swing.JPanel(); backgroundColor = new net.java.dev.colorchooser.ColorChooser(); labelBackgroundColor = new javax.swing.JLabel(); resetButton = new javax.swing.JButton(); titleDesign.setTitle(org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.titleDesign.title")); // NOI18N titleLabel.setTitle(org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.titleLabel.title")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(labelDefaultSettings, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelDefaultSettings.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(use3dCheckbox, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.use3dCheckbox.text")); // NOI18N use3dCheckbox.setMargin(new java.awt.Insets(2, 0, 2, 2)); org.openide.awt.Mnemonics.setLocalizedText(autoSelectNeighborCheckbox, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.autoSelectNeighborCheckbox.text")); // NOI18N autoSelectNeighborCheckbox.setMargin(new java.awt.Insets(2, 0, 2, 2)); org.openide.awt.Mnemonics.setLocalizedText(highlightCheckbox, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.highlightCheckbox.text")); // NOI18N highlightCheckbox.setMargin(new java.awt.Insets(2, 0, 2, 2)); org.openide.awt.Mnemonics.setLocalizedText(labelColor, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelColor.text")); // NOI18N nodeLabelColorButton.setPreferredSize(new java.awt.Dimension(12, 12)); javax.swing.GroupLayout nodeLabelColorButtonLayout = new javax.swing.GroupLayout(nodeLabelColorButton); nodeLabelColorButton.setLayout(nodeLabelColorButtonLayout); nodeLabelColorButtonLayout.setHorizontalGroup( nodeLabelColorButtonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 10, Short.MAX_VALUE) ); nodeLabelColorButtonLayout.setVerticalGroup( nodeLabelColorButtonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 10, Short.MAX_VALUE) ); org.openide.awt.Mnemonics.setLocalizedText(labelNodeLabelColor, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelNodeLabelColor.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(labelEdgeLabelColor, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelEdgeLabelColor.text")); // NOI18N edgeLabelColorButton.setPreferredSize(new java.awt.Dimension(12, 12)); javax.swing.GroupLayout edgeLabelColorButtonLayout = new javax.swing.GroupLayout(edgeLabelColorButton); edgeLabelColorButton.setLayout(edgeLabelColorButtonLayout); edgeLabelColorButtonLayout.setHorizontalGroup( edgeLabelColorButtonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 10, Short.MAX_VALUE) ); edgeLabelColorButtonLayout.setVerticalGroup( edgeLabelColorButtonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 10, Short.MAX_VALUE) ); org.openide.awt.Mnemonics.setLocalizedText(labelFont, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelFont.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(nodeFontButton, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.nodeFontButton.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(labelNodeFont, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelNodeFont.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(labelEdgeFont, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelEdgeFont.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(edgeFontButton, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.edgeFontButton.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(labelBackground, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelBackground.text")); // NOI18N labelBackgroundPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 3, 5)); backgroundColor.setPreferredSize(new java.awt.Dimension(12, 12)); javax.swing.GroupLayout backgroundColorLayout = new javax.swing.GroupLayout(backgroundColor); backgroundColor.setLayout(backgroundColorLayout); backgroundColorLayout.setHorizontalGroup( backgroundColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 10, Short.MAX_VALUE) ); backgroundColorLayout.setVerticalGroup( backgroundColorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 10, Short.MAX_VALUE) ); labelBackgroundPanel.add(backgroundColor); labelBackgroundColor.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); org.openide.awt.Mnemonics.setLocalizedText(labelBackgroundColor, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.labelBackgroundColor.text")); // NOI18N labelBackgroundColor.setPreferredSize(new java.awt.Dimension(28, 14)); labelBackgroundPanel.add(labelBackgroundColor); org.openide.awt.Mnemonics.setLocalizedText(resetButton, org.openide.util.NbBundle.getMessage(DefaultPanel.class, "DefaultPanel.resetButton.text")); // NOI18N resetButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { resetButtonActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(titleDesign, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(labelDefaultSettings) .addComponent(labelBackground)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(use3dCheckbox) .addComponent(autoSelectNeighborCheckbox) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(labelBackgroundPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(highlightCheckbox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addComponent(titleLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(labelColor) .addComponent(labelFont, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(65, 65, 65) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(nodeFontButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelNodeFont)) .addGroup(layout.createSequentialGroup() .addComponent(edgeLabelColorButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelEdgeLabelColor)) .addGroup(layout.createSequentialGroup() .addComponent(nodeLabelColorButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelNodeLabelColor)) .addGroup(layout.createSequentialGroup() .addComponent(edgeFontButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelEdgeFont)))) .addComponent(resetButton)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(titleDesign, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(6, 6, 6) .addComponent(labelDefaultSettings)) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(use3dCheckbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(autoSelectNeighborCheckbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(highlightCheckbox))) .addGap(16, 16, 16) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(labelBackground) .addComponent(labelBackgroundPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(titleLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(labelColor) .addGap(34, 34, 34) .addComponent(labelFont)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(nodeLabelColorButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelNodeLabelColor)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(edgeLabelColorButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelEdgeLabelColor)) .addGap(14, 14, 14) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(nodeFontButton) .addComponent(labelNodeFont)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(edgeFontButton) .addComponent(labelEdgeFont)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 62, Short.MAX_VALUE) .addComponent(resetButton) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents private void resetButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetButtonActionPerformed NbPreferences.forModule(VizConfig.class).remove(VizConfig.USE_3D); NbPreferences.forModule(VizConfig.class).remove(VizConfig.HIGHLIGHT); NbPreferences.forModule(VizConfig.class).remove(VizConfig.NEIGHBOUR_SELECT); NbPreferences.forModule(VizConfig.class).remove(VizConfig.BACKGROUND_COLOR); NbPreferences.forModule(VizConfig.class).remove(VizConfig.NODE_LABEL_COLOR); NbPreferences.forModule(VizConfig.class).remove(VizConfig.EDGE_LABEL_COLOR); NbPreferences.forModule(VizConfig.class).remove(VizConfig.NODE_LABEL_FONT); NbPreferences.forModule(VizConfig.class).remove(VizConfig.EDGE_LABEL_FONT); load(); }//GEN-LAST:event_resetButtonActionPerformed void load() { //Default design settings use3dCheckbox.setSelected(NbPreferences.forModule(VizConfig.class).getBoolean(VizConfig.USE_3D, VizConfig.DEFAULT_USE_3D)); highlightCheckbox.setSelected(NbPreferences.forModule(VizConfig.class).getBoolean(VizConfig.HIGHLIGHT, VizConfig.DEFAULT_HIGHLIGHT)); autoSelectNeighborCheckbox.setSelected(NbPreferences.forModule(VizConfig.class).getBoolean(VizConfig.NEIGHBOUR_SELECT, VizConfig.DEFAULT_NEIGHBOUR_SELECT)); backgroundColor.setColor(ColorUtils.decode(NbPreferences.forModule(VizConfig.class).get(VizConfig.BACKGROUND_COLOR, ColorUtils.encode(VizConfig.DEFAULT_BACKGROUND_COLOR)))); //Label settings nodeLabelColorButton.setColor(ColorUtils.decode(NbPreferences.forModule(VizConfig.class).get(VizConfig.NODE_LABEL_COLOR, ColorUtils.encode(VizConfig.DEFAULT_NODE_LABEL_COLOR)))); edgeLabelColorButton.setColor(ColorUtils.decode(NbPreferences.forModule(VizConfig.class).get(VizConfig.EDGE_LABEL_COLOR, ColorUtils.encode(VizConfig.DEFAULT_EDGE_LABEL_COLOR)))); nodeFont = Font.decode(NbPreferences.forModule(VizConfig.class).get(VizConfig.NODE_LABEL_FONT, FontUtils.encode(VizConfig.DEFAULT_NODE_LABEL_FONT))); nodeFontButton.setText(nodeFont.getFontName() + ", " + nodeFont.getSize()); edgeFont = Font.decode(NbPreferences.forModule(VizConfig.class).get(VizConfig.EDGE_LABEL_FONT, FontUtils.encode(VizConfig.DEFAULT_EDGE_LABEL_FONT))); edgeFontButton.setText(edgeFont.getFontName() + ", " + edgeFont.getSize()); } void store() { //Default design settings NbPreferences.forModule(VizConfig.class).putBoolean(VizConfig.USE_3D, use3dCheckbox.isSelected()); NbPreferences.forModule(VizConfig.class).putBoolean(VizConfig.HIGHLIGHT, highlightCheckbox.isSelected()); NbPreferences.forModule(VizConfig.class).putBoolean(VizConfig.NEIGHBOUR_SELECT, autoSelectNeighborCheckbox.isSelected()); NbPreferences.forModule(VizConfig.class).put(VizConfig.BACKGROUND_COLOR, ColorUtils.encode(backgroundColor.getColor())); //Label settings NbPreferences.forModule(VizConfig.class).put(VizConfig.NODE_LABEL_COLOR, ColorUtils.encode(nodeLabelColorButton.getColor())); NbPreferences.forModule(VizConfig.class).put(VizConfig.EDGE_LABEL_COLOR, ColorUtils.encode(edgeLabelColorButton.getColor())); NbPreferences.forModule(VizConfig.class).put(VizConfig.NODE_LABEL_FONT, FontUtils.encode(nodeFont)); NbPreferences.forModule(VizConfig.class).put(VizConfig.EDGE_LABEL_FONT, FontUtils.encode(edgeFont)); } boolean valid() { // TODO check whether form is consistent and complete return true; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox autoSelectNeighborCheckbox; private net.java.dev.colorchooser.ColorChooser backgroundColor; private javax.swing.JButton edgeFontButton; private net.java.dev.colorchooser.ColorChooser edgeLabelColorButton; private javax.swing.JCheckBox highlightCheckbox; private javax.swing.JLabel labelBackground; private javax.swing.JLabel labelBackgroundColor; private javax.swing.JPanel labelBackgroundPanel; private javax.swing.JLabel labelColor; private javax.swing.JLabel labelDefaultSettings; private javax.swing.JLabel labelEdgeFont; private javax.swing.JLabel labelEdgeLabelColor; private javax.swing.JLabel labelFont; private javax.swing.JLabel labelNodeFont; private javax.swing.JLabel labelNodeLabelColor; private javax.swing.JButton nodeFontButton; private net.java.dev.colorchooser.ColorChooser nodeLabelColorButton; private javax.swing.JButton resetButton; private org.jdesktop.swingx.JXTitledSeparator titleDesign; private org.jdesktop.swingx.JXTitledSeparator titleLabel; private javax.swing.JCheckBox use3dCheckbox; // End of variables declaration//GEN-END:variables }