📄 gemlayoutconfigurationdialog.java
字号:
/******************************************************************************/
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 + -