⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gemlayoutconfigurationdialog.java

📁 用JGraph编的软件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    
/******************************************************************************/    

    protected void action_ok() {
        
        action_ok(new ArrayList());
    }

/******************************************************************************/    
    /** 
     * Called by pressing the ok button. Checks all Textfields for their value
     * and produce a list of errors, while checking. If an error has appeared,
     * an error dialog is displayed, else the configuration dialog disappears.
     */
    protected void action_ok(ArrayList errList) {

        boolean isOK = true;

        isOK &= assertDouble(tf_initTemperature.getText(),    GEMLayoutController.KEY_INIT_TEMPERATURE           ,errList);
        isOK &= assertDouble(tf_minTemperature.getText(),     GEMLayoutController.KEY_MIN_TEMPERATURE            ,errList);
        isOK &= assertDouble(tf_maxTemperature.getText(),     GEMLayoutController.KEY_MIN_TEMPERATURE            ,errList);
        isOK &= assertDouble(tf_prefEdgeLength.getText(),     GEMLayoutController.KEY_PREF_EDGE_LENGTH           ,errList);
        isOK &= assertDouble(tf_gravitation.getText(),        GEMLayoutController.KEY_GRAVITATION                ,errList);
        isOK &= assertDouble(tf_randomImpulseRange.getText(), GEMLayoutController.KEY_RANDOM_IMPULSE_RANGE       ,errList);
        isOK &= assertDouble(tf_overlapDetectWidth.getText(), GEMLayoutController.KEY_OVERLAPPING_DETECTION_WIDTH,errList);
        isOK &= assertDouble(tf_overlapPrefDistance.getText(),GEMLayoutController.KEY_OVERLAPPING_PREF_DISTANCE  ,errList);
        isOK &= assertDouble(tf_alphaOsc.getText(),           GEMLayoutController.KEY_ALPHA_OSC                  ,errList);
        isOK &= assertDouble(tf_alphaRot.getText(),           GEMLayoutController.KEY_ALPHA_ROT                  ,errList);
        isOK &= assertDouble(tf_sigmaOsc.getText(),           GEMLayoutController.KEY_SIGMA_OSC                  ,errList);
        isOK &= assertDouble(tf_sigmaRot.getText(),           GEMLayoutController.KEY_SIGMA_ROT                  ,errList);
        
        isOK &= assertDouble(tf_lu_initTemperature.getText(),    GEMLayoutController.KEY_LAYOUT_UPDATE_INIT_TEMPERATURE           ,errList);
        isOK &= assertDouble(tf_lu_minTemperature.getText(),     GEMLayoutController.KEY_LAYOUT_UPDATE_MIN_TEMPERATURE            ,errList);
        isOK &= assertDouble(tf_lu_maxTemperature.getText(),     GEMLayoutController.KEY_LAYOUT_UPDATE_MAX_TEMPERATURE            ,errList);
        isOK &= assertDouble(tf_lu_prefEdgeLength.getText(),     GEMLayoutController.KEY_LAYOUT_UPDATE_PREF_EDGE_LENGTH           ,errList);
        isOK &= assertDouble(tf_lu_gravitation.getText(),        GEMLayoutController.KEY_LAYOUT_UPDATE_GRAVITATION                ,errList);
        isOK &= assertDouble(tf_lu_randomImpulseRange.getText(), GEMLayoutController.KEY_LAYOUT_UPDATE_RANDOM_IMPULSE_RANGE       ,errList);
        isOK &= assertDouble(tf_lu_overlapDetectWidth.getText(), GEMLayoutController.KEY_LAYOUT_UPDATE_OVERLAPPING_DETECTION_WIDTH,errList);
        isOK &= assertDouble(tf_lu_overlapPrefDistance.getText(),GEMLayoutController.KEY_LAYOUT_UPDATE_OVERLAPPING_PREF_DISTANCE  ,errList);
        isOK &= assertDouble(tf_lu_alphaOsc.getText(),           GEMLayoutController.KEY_LAYOUT_UPDATE_ALPHA_OSC                  ,errList);
        isOK &= assertDouble(tf_lu_alphaRot.getText(),           GEMLayoutController.KEY_LAYOUT_UPDATE_ALPHA_ROT                  ,errList);
        isOK &= assertDouble(tf_lu_sigmaOsc.getText(),           GEMLayoutController.KEY_LAYOUT_UPDATE_SIGMA_OSC                  ,errList);
        isOK &= assertDouble(tf_lu_sigmaRot.getText(),           GEMLayoutController.KEY_LAYOUT_UPDATE_SIGMA_ROT                  ,errList);
        
        isOK &= assertInteger(tf_lu_depth.getText(),             GEMLayoutController.KEY_LAYOUT_UPDATE_DEPTH               ,errList);
        isOK &= assertDouble(tf_lu_perimeter_initSize.getText(), GEMLayoutController.KEY_LAYOUT_UPDATE_METHOD_PERIMETER_INIT_SIZE,errList);
        isOK &= assertDouble(tf_lu_perimeter_sizeInc.getText(),  GEMLayoutController.KEY_LAYOUT_UPDATE_METHOD_PERIMETER_SIZE_INC,errList);
        isOK &= assertDouble(tf_lu_cluster_initTemperature.getText(),GEMLayoutController.KEY_LAYOUT_UPDATE_CLUSTERING_INIT_TEMPERATURE,errList);
        isOK &= assertDouble(tf_lu_cluster_forceScalingFactor.getText(),GEMLayoutController.KEY_LAYOUT_UPDATE_CLUSTERING_FORCE_SCALING_FACTOR,errList);
        isOK &= assertDouble(tf_lu_cluster_factor.getText(),     GEMLayoutController.KEY_LAYOUT_UPDATE_CLUSTERING_FACTOR          ,errList);
        
        if( isOK ){
            isOK &= assertMinimum(tf_initTemperature.getText(),0.0,false,GEMLayoutController.KEY_INIT_TEMPERATURE,errList);
            isOK &= assertMinimum(tf_minTemperature.getText(),0.0,false,GEMLayoutController.KEY_MIN_TEMPERATURE,errList);
            isOK &= assertMinimum(tf_maxTemperature.getText(),0.0,false,GEMLayoutController.KEY_MAX_TEMPERATURE,errList);
            isOK &= assertMinimum(tf_prefEdgeLength.getText(),0.0,false,GEMLayoutController.KEY_PREF_EDGE_LENGTH,errList);
            isOK &= assertRange(tf_gravitation.getText(),0.0,1.0,true,true,GEMLayoutController.KEY_GRAVITATION,errList);
            isOK &= assertMinimum(tf_randomImpulseRange.getText(),0.0,false,GEMLayoutController.KEY_RANDOM_IMPULSE_RANGE,errList);
            isOK &= assertMinimum(tf_overlapDetectWidth.getText(),0.0,false,GEMLayoutController.KEY_OVERLAPPING_DETECTION_WIDTH,errList);
            isOK &= assertMinimum(tf_overlapPrefDistance.getText(),0.0,false,GEMLayoutController.KEY_OVERLAPPING_PREF_DISTANCE,errList);
            isOK &= assertRange(tf_alphaOsc.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_ALPHA_OSC,errList);
            isOK &= assertRange(tf_alphaRot.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_ALPHA_ROT,errList);
            isOK &= assertRange(tf_sigmaOsc.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_SIGMA_OSC,errList);
            isOK &= assertRange(tf_sigmaRot.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_SIGMA_ROT,errList);
            
            isOK &= assertMinimum(tf_lu_initTemperature.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_INIT_TEMPERATURE,errList);
            isOK &= assertMinimum(tf_lu_minTemperature.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_MIN_TEMPERATURE,errList);
            isOK &= assertMinimum(tf_lu_maxTemperature.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_MAX_TEMPERATURE,errList);
            isOK &= assertMinimum(tf_lu_prefEdgeLength.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_PREF_EDGE_LENGTH,errList);
            isOK &= assertRange(tf_lu_gravitation.getText(),0.0,1.0,true,true,GEMLayoutController.KEY_LAYOUT_UPDATE_GRAVITATION,errList);
            isOK &= assertMinimum(tf_lu_randomImpulseRange.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_RANDOM_IMPULSE_RANGE,errList);
            isOK &= assertMinimum(tf_lu_overlapDetectWidth.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_OVERLAPPING_DETECTION_WIDTH,errList);
            isOK &= assertMinimum(tf_lu_overlapPrefDistance.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_OVERLAPPING_PREF_DISTANCE,errList);
            isOK &= assertRange(tf_lu_alphaOsc.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_LAYOUT_UPDATE_ALPHA_OSC,errList);
            isOK &= assertRange(tf_lu_alphaRot.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_LAYOUT_UPDATE_ALPHA_ROT,errList);
            isOK &= assertRange(tf_lu_sigmaOsc.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_LAYOUT_UPDATE_SIGMA_OSC,errList);
            isOK &= assertRange(tf_lu_sigmaRot.getText(),0.0,360.0,true,false,GEMLayoutController.KEY_LAYOUT_UPDATE_SIGMA_ROT,errList);
            
            isOK &= assertMinimum(tf_lu_depth.getText(),0,true,GEMLayoutController.KEY_LAYOUT_UPDATE_DEPTH,errList);
            isOK &= assertMinimum(tf_lu_perimeter_initSize.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_METHOD_PERIMETER_INIT_SIZE,errList);
            isOK &= assertMinimum(tf_lu_perimeter_sizeInc.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_METHOD_PERIMETER_SIZE_INC,errList);
            isOK &= assertMinimum(tf_lu_cluster_initTemperature.getText(),0.0,false,GEMLayoutController.KEY_LAYOUT_UPDATE_CLUSTERING_INIT_TEMPERATURE,errList);
            isOK &= assertRange(tf_lu_cluster_forceScalingFactor.getText(),0.0,1.0,false,true,GEMLayoutController.KEY_LAYOUT_UPDATE_CLUSTERING_FORCE_SCALING_FACTOR,errList);
            isOK &= assertMinimum(tf_lu_cluster_factor.getText(),1.0,true,GEMLayoutController.KEY_LAYOUT_UPDATE_CLUSTERING_FACTOR,errList);
        }

        if( isOK ){
            setVisible(false);
            dispose();
            canceled = false;
        }
        else {
            //writing all errors in one string and adding to every error a 
            //return, except to the last one
            String errorMsg = new String("Error\n\n");
            for( int i = 0; i < errList.size(); i++ ){
                errorMsg += (String)errList.get(i);
                if( i != errList.size() - 1 )
                    errorMsg += "\n";
            }
                
            JOptionPane.showMessageDialog(this, errorMsg, "Error", JOptionPane.INFORMATION_MESSAGE);
        }
    }
        
/******************************************************************************/    

    protected void action_LoadPreSets(int index){
        switchPreferences(index);
        switchLayoutUpdatePanel();
        switchVisibility();
    }
    
/******************************************************************************/
/**
 * Enables/Disables Textfields and other components, depending on the state of
 * checkboxes and comboboxes on the dialog.
 */
    private void switchVisibility(){            
        tf_overlapDetectWidth.setEnabled(cb_avoidOverlapping.isSelected());
        tf_overlapPrefDistance.setEnabled(cb_avoidOverlapping.isSelected());
        tf_lu_overlapDetectWidth.setEnabled(cb_lu_avoidOverlapping.isSelected());
        tf_lu_overlapPrefDistance.setEnabled(cb_lu_avoidOverlapping.isSelected());
        button_ConfigOptimizeAlg.setEnabled(cb_useOptimizationAlg.isSelected());
        button_lu_ConfigOptimizeAlg.setEnabled(cb_lu_useOptimizationAlg.isSelected());
        tf_lu_cluster_initTemperature.setEnabled(cb_lu_cluster_enable.isSelected());
        tf_lu_cluster_forceScalingFactor.setEnabled(cb_lu_cluster_enable.isSelected());
        tf_lu_cluster_factor.setEnabled(cb_lu_cluster_enable.isSelected());
        if(comb_lu_method.getSelectedItem() == GEMLayoutController.KEY_LAYOUT_UPDATE_METHOD_NEIGHBORS_ONLY){
            tf_lu_perimeter_initSize.setEnabled(false);
            tf_lu_perimeter_sizeInc .setEnabled(false);
        }
        else if(comb_lu_method.getSelectedItem() == GEMLayoutController.KEY_LAYOUT_UPDATE_METHOD_PERIMETERS){
            tf_lu_perimeter_initSize.setEnabled(true);
            tf_lu_perimeter_sizeInc .setEnabled(true);            
        }
    }

/******************************************************************************/    
    /**
     * Returns true if the dialog has been canceled.
     */
    public boolean isCanceled() {
        return canceled;
    }
        
/******************************************************************************/    

    private void switchLayoutUpdatePanel(){
        if( cb_lu_enableLayoutUpdate.isSelected() ){
			tp_main.addTab("Update Values", panelLayoutUpdateWrapper);
        }
        else {
        	tp_main.remove(panelLayoutUpdateWrapper);
        }
        pack();
    }

/******************************************************************************/    
    /** Initialize the Swing Components
     */    
    private void initComponents() {
        
        JPanel panelGlobalValues = new JPanel(new GridBagLayout());
        JPanel panelLabels    = new JPanel(new GridLayout(12,1, 0,5));
        JPanel panelFields    = new JPanel(new GridLayout(12,1, 0,5));
        JPanel panelLayoutRun = new JPanel(new BorderLayout(5,10));
        JPanel panelButtons   = new JPanel(new GridLayout(1,3,10,0));
        JPanel panelDefaults  = new JPanel(new GridLayout(1,2,10,4));
        JPanel panelOverlap   = new JPanel(new GridLayout(3,2,10,4));
        JPanel panelOptimize  = new JPanel(new BorderLayout());
        JPanel panelOptiAlg   = new JPanel(new GridLayout(2,2));
        tp_main = new JTabbedPane();
        
        panelLayoutUpdate = new JPanel(new BorderLayout(5,10));
        panelLayoutUpdate.setBackground(new Color(205,215,215));
        //panelLayoutUpdate.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Update Values"));
        
        panelDefaults.add(panelLabels);
        panelDefaults.add(panelFields);
        
        //panelLayoutRun.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Apply Values"));
        panelLayoutRun.add(panelDefaults,BorderLayout.NORTH);
        panelLayoutRun.add(panelOptimize,BorderLayout.CENTER);
        panelLayoutRun.add(  getAdditionalForceConfig()  ,BorderLayout.SOUTH);        
        panelLayoutRun.setBackground(new Color(215,215,205));
        
        panelOptimize.add(panelOptiAlg,BorderLayout.NORTH);
        panelOptimize.add(panelOverlap,BorderLayout.CENTER);
        panelOptimize.setOpaque(false);
        
        
        panelDefaults.setOpaque(false);
        panelOverlap.setOpaque(false);
        panelLabels.setOpaque(false);
        panelFields.setOpaque(false);
        

        
        getContentPane().setLayout(new BorderLayout(5,10));
        getContentPane().add(  panelGlobalValues ,BorderLayout.NORTH);
		getContentPane().add(  tp_main    ,BorderLayout.CENTER);
        getContentPane().add(  panelButtons      ,BorderLayout.SOUTH);
        
        panelGlobalValues.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Global Settings"));
		
		
        panelGlobalValues.add(new JLabel("run permanent :"),                                    
                              new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 
                                                     GridBagConstraints.WEST,
                                                     GridBagConstraints.NONE,
                                                     new Insets(0,5,0,30), 
                                                     0,0) );

        cb_lu_enableLayoutUpdate = new JCheckBox();
        panelGlobalValues.add(cb_lu_enableLayoutUpdate,
                              new GridBagConstraints(1, 0, 1, 1, 1.0, 1.0, 
                                                     GridBagConstraints.WEST,
                                                     GridBagConstraints.HORIZONTAL,
                                                     new Insets(0,0,0,0), 
                                                     0,0) );

       
        
        
        panelLabels.add( new JLabel("start temperature :"));
        panelLabels.add( new JLabel("min. temperature :"));
        panelLabels.add( new JLabel("max. temperature :"));
        panelLabels.add( new JLabel("preferred Edge length :"));
        panelLabels.add( new JLabel("gravitation :"));
        panelLabels.add( new JLabel("range of random impulse :"));
        panelLabels.add( new JLabel("compute permutations :"));
        panelLabels.add( new JLabel("end condition is average :"));
        panelLabels.add( new JLabel("alpha oscillation :"));
        panelLabels.add( new JLabel("alpha rotation :"));
        panelLabels.add( new JLabel("sigma oscillation :"));
        panelLabels.add( new JLabel("sigma rotation :"));
        
        

        tf_initTemperature    = new JTextField();
        tf_minTemperature     = new JTextField();
        tf_maxTemperature     = new JTextField();
        tf_prefEdgeLength     = new JTextField();
        tf_gravitation        = new JTextField();
        tf_randomImpulseRange = new JTextField();
        
        cb_computePermutation    = new JCheckBox();
        cb_endPerAverage         = new JCheckBox();
        
        cb_computePermutation   .setOpaque(false);
        cb_endPerAverage        .setOpaque(false);
        
        tf_alphaOsc           = new JTextField();
        tf_alphaRot           = new JTextField();
        
        tf_sigmaOsc           = new JTextField();
        tf_sigmaRot           = new JTextField();
    
        panelFields.add(tf_initTemperature);
        panelFields.add(tf_minTemperature);
        panelFields.add(tf_maxTemperature);
        panelFields.add(tf_prefEdgeLength);
        panelFields.add(tf_gravitation);
        panelFields.add(tf_randomImpulseRange);
        panelFields.add(cb_computePermutation);
        panelFields.add(cb_endPerAverage);
        panelFields.add(tf_alphaOsc);
        panelFields.add(tf_alphaRot);
        panelFields.add(tf_sigmaOsc);
        panelFields.add(tf_sigmaRot);
        
        
        cb_avoidOverlapping = new JCheckBox();
        cb_avoidOverlapping.setOpaque(false);
        tf_overlapDetectWidth = new JTextField();
        tf_overlapPrefDistance = new JTextField();
        
        
        JPanel panelOverlapSwitch = new JPanel(new GridLayout(1,2,10,4));
        panelOverlapSwitch.setOpaque(false);
        panelOverlapSwitch.add(new JLabel("on/off"));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -