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

📄 gemlayoutcontroller.java

📁 用JGraph编的软件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package org.jgraph.layout;


import java.util.Properties;
import javax.swing.JFrame;
import org.jgraph.layout.LayoutAlgorithm;
import org.jgraph.layout.LayoutController;
import org.jgraph.layout.GEMLayoutAlgorithm;

/**
 * @author winkler
 *
 * To change this generated comment edit the template variable "typecomment":
 * Window>Preferences>Java>Templates.
 * To enable and disable the creation of type comments go to
 * Window>Preferences>Java>Code Generation.
 */

/******************************************************************************/    
/*############################################################################*/
/*############################################################################*/
/*############################################################################*/
/*############################################################################*/
/******************************************************************************/    

public class GEMLayoutController implements LayoutController {
    
    public final static String KEY_TITLE                  = "GEM";
    
    public final static String KEY_CONFIG_NAME                 = "CONFIG_NAME";
    public final static String KEY_INIT_TEMPERATURE            = "init temperature";
    public final static String KEY_MIN_TEMPERATURE             = "min temperature";
    public final static String KEY_MAX_TEMPERATURE             = "max temperature";
    public final static String KEY_PREF_EDGE_LENGTH            = "preferred Edge length";
    public final static String KEY_GRAVITATION                 = "gravitation to barycenter";
    public final static String KEY_RANDOM_IMPULSE_RANGE        = "random impulse range";
    public final static String KEY_COMPUTE_PERMUTATION         = "compute permutation";
    public final static String KEY_END_CONDITION_AVERAGE       = "end condition average"; 
    public final static String KEY_AVOID_OVERLAPPING           = "avoid overlapping";
    public final static String KEY_OVERLAPPING_DETECTION_WIDTH = "overlapping detection width";   
    public final static String KEY_OVERLAPPING_PREF_DISTANCE   = "overlapping preferred distance";
    public final static String KEY_ALPHA_OSC                   = "alpha oscillation";
    public final static String KEY_ALPHA_ROT                   = "alpha rotation";
    public final static String KEY_SIGMA_OSC                   = "sigma oscillation";
    public final static String KEY_SIGMA_ROT                   = "sigma rotation";
    public final static String KEY_OPTIMIZE_ALGORITHM_ENABLED  = "optimization algorithm enabled";
    public final static String KEY_OPTIMIZE_ALGORITHM_CONFIG   = "optimization algorithm configuration";

    public final static String KEY_LAYOUT_UPDATE_INIT_TEMPERATURE            = "Layout Update init temperature";
    public final static String KEY_LAYOUT_UPDATE_MIN_TEMPERATURE             = "Layout Update min temperature";
    public final static String KEY_LAYOUT_UPDATE_MAX_TEMPERATURE             = "Layout Update max temperature";
    public final static String KEY_LAYOUT_UPDATE_PREF_EDGE_LENGTH            = "Layout Update preferred Edge length";
    public final static String KEY_LAYOUT_UPDATE_GRAVITATION                 = "Layout Update gravitation to barycenter";
    public final static String KEY_LAYOUT_UPDATE_RANDOM_IMPULSE_RANGE        = "Layout Update random impulse range";
    public final static String KEY_LAYOUT_UPDATE_COMPUTE_PERMUTATION         = "Layout Update compute permutation";
    public final static String KEY_LAYOUT_UPDATE_END_CONDITION_AVERAGE       = "Layout Update end condition average";    
    public final static String KEY_LAYOUT_UPDATE_AVOID_OVERLAPPING           = "Layout Update avoid overlapping";
    public final static String KEY_LAYOUT_UPDATE_OVERLAPPING_DETECTION_WIDTH = "Layout Update overlapping detection width";   
    public final static String KEY_LAYOUT_UPDATE_OVERLAPPING_PREF_DISTANCE   = "Layout Update overlapping preferred distance";
    public final static String KEY_LAYOUT_UPDATE_ALPHA_ROT                   = "Layout Update alpha oscillation";
    public final static String KEY_LAYOUT_UPDATE_ALPHA_OSC                   = "Layout Update alpha rotation";
    public final static String KEY_LAYOUT_UPDATE_SIGMA_ROT                   = "Layout Update sigma oscillation";
    public final static String KEY_LAYOUT_UPDATE_SIGMA_OSC                   = "Layout Update sigma rotation";
    public final static String KEY_LAYOUT_UPDATE_ENABLED                     = "Layout Update enabled";
    public final static String KEY_LAYOUT_UPDATE_METHOD                      = "Layout Update method";
    public final static String KEY_LAYOUT_UPDATE_OPTIMIZE_ALGORITHM_ENABLED  = "Layout Update optimization algorithm enabled";
    public final static String KEY_LAYOUT_UPDATE_OPTIMIZE_ALGORITHM_CONFIG   = "Layout Update optimization algorithm configuration";
    
    
    public final static String KEY_LAYOUT_UPDATE_METHOD_NEIGHBORS_ONLY       = "Neighbors only";
    public final static String KEY_LAYOUT_UPDATE_METHOD_PERIMETERS           = "Perimeter";
    public final static String KEY_LAYOUT_UPDATE_DEPTH                       = "Layout Update depth";
    public final static String KEY_LAYOUT_UPDATE_METHOD_PERIMETER_INIT_SIZE  = "Layout Update method perimeter initial size";
    public final static String KEY_LAYOUT_UPDATE_METHOD_PERIMETER_SIZE_INC   = "Layout Update method perimeter size increase value";
    
    public final static String KEY_LAYOUT_UPDATE_CLUSTERING_ENABLED              = "clustering enabled";
    public final static String KEY_LAYOUT_UPDATE_CLUSTERING_INIT_TEMPERATURE     = "cluster init temperature";
    public final static String KEY_LAYOUT_UPDATE_CLUSTERING_FORCE_SCALING_FACTOR = "clustering force scaling factor";
    public final static String KEY_LAYOUT_UPDATE_CLUSTERING_FACTOR               = "cluster size factor";
    
    protected Properties[] configs;  
    protected Properties   configuration;  
    protected GEMLayoutConfigurationDialog dialog;
    protected AnnealingLayoutController optimizeController;
    protected AnnealingLayoutController lu_optimizeController;
    
/******************************************************************************/    
    
    public GEMLayoutController(){
        
        optimizeController = new AnnealingLayoutController(true);
        
        lu_optimizeController = new AnnealingLayoutController(true);
        
        configs = new Properties[2];
        for( int i = 0; i < configs.length; i++ )
            configs[i] = new Properties();
            
        Properties optimizeConfig = optimizeController.getConfiguration();
        optimizeConfig.put(AnnealingLayoutController.KEY_CONFIG_NAME,KEY_TITLE+" optimization values");
        optimizeConfig.put(AnnealingLayoutController.KEY_COST_FUNCTION_CONFIG,"110111");
        optimizeConfig.put(AnnealingLayoutController.KEY_INIT_TEMPERATURE,"40.0");
        optimizeConfig.put(AnnealingLayoutController.KEY_MIN_DISTANCE,"100.0");
        optimizeConfig.put(AnnealingLayoutController.KEY_TEMP_SCALE_FACTOR,"0.85");
        optimizeController.setConfiguration(optimizeConfig);

        Properties lu_optimizeConfig = lu_optimizeController.getConfiguration();
        lu_optimizeConfig.put(AnnealingLayoutController.KEY_CONFIG_NAME,KEY_TITLE+" optimization values");
        lu_optimizeConfig.put(AnnealingLayoutController.KEY_COST_FUNCTION_CONFIG,"110111");
        lu_optimizeConfig.put(AnnealingLayoutController.KEY_INIT_TEMPERATURE,"40.0");
        lu_optimizeConfig.put(AnnealingLayoutController.KEY_MIN_DISTANCE,"100.0");
        lu_optimizeConfig.put(AnnealingLayoutController.KEY_TEMP_SCALE_FACTOR,"0.85");
        lu_optimizeController.setConfiguration(lu_optimizeConfig);
                
        configs[0].put(KEY_CONFIG_NAME           ,"Default Values");
        configs[0].put(KEY_INIT_TEMPERATURE      , "50.0"   );
        configs[0].put(KEY_MIN_TEMPERATURE       ,  "3.0"   );
        configs[0].put(KEY_MAX_TEMPERATURE       ,"256.0"   );
        configs[0].put(KEY_PREF_EDGE_LENGTH      ,"100.0"   );
        configs[0].put(KEY_GRAVITATION           ,  "0.0625");
        configs[0].put(KEY_RANDOM_IMPULSE_RANGE  , "32.0"   );
        configs[0].put(KEY_COMPUTE_PERMUTATION   , "true"   );
        configs[0].put(KEY_END_CONDITION_AVERAGE , "true"   );
        configs[0].put(KEY_AVOID_OVERLAPPING     , "false"   );
        configs[0].put(KEY_OVERLAPPING_DETECTION_WIDTH, "40.0");
        configs[0].put(KEY_OVERLAPPING_PREF_DISTANCE, "40.0");
        configs[0].put(KEY_ALPHA_OSC             ,String.valueOf(Math.PI/2.0));
        configs[0].put(KEY_ALPHA_ROT             ,String.valueOf(Math.PI/3.0));
        configs[0].put(KEY_SIGMA_OSC             ,String.valueOf(1.0/3.0)); //a higher value leads to a faster falling temperature
        configs[0].put(KEY_SIGMA_ROT             ,String.valueOf(1.0/2.0)); //as smaller this value is, the smaller the temperature alteration
        configs[0].put(KEY_OPTIMIZE_ALGORITHM_ENABLED,"false");
        configs[0].put(KEY_OPTIMIZE_ALGORITHM_CONFIG,optimizeConfig.clone());
        
        configs[0].put(KEY_LAYOUT_UPDATE_INIT_TEMPERATURE      ,"10.0");
        configs[0].put(KEY_LAYOUT_UPDATE_MIN_TEMPERATURE       ,"3.0");
        configs[0].put(KEY_LAYOUT_UPDATE_MAX_TEMPERATURE       ,"256.0");
        configs[0].put(KEY_LAYOUT_UPDATE_PREF_EDGE_LENGTH      ,"100.0");
        configs[0].put(KEY_LAYOUT_UPDATE_GRAVITATION           ,"0.0625");
        configs[0].put(KEY_LAYOUT_UPDATE_RANDOM_IMPULSE_RANGE  ,"32.0");
        configs[0].put(KEY_LAYOUT_UPDATE_COMPUTE_PERMUTATION   ,"true");
        configs[0].put(KEY_LAYOUT_UPDATE_END_CONDITION_AVERAGE ,"true");
        configs[0].put(KEY_LAYOUT_UPDATE_AVOID_OVERLAPPING     ,"false");
        configs[0].put(KEY_LAYOUT_UPDATE_OVERLAPPING_DETECTION_WIDTH,"40.0");
        configs[0].put(KEY_LAYOUT_UPDATE_OVERLAPPING_PREF_DISTANCE,  "40.0");
        configs[0].put(KEY_LAYOUT_UPDATE_ALPHA_OSC             ,String.valueOf(Math.toRadians(90.0)));
        configs[0].put(KEY_LAYOUT_UPDATE_ALPHA_ROT             ,String.valueOf(Math.toRadians(60.0)));
        configs[0].put(KEY_LAYOUT_UPDATE_SIGMA_OSC             ,String.valueOf(1.0/3.0));
        configs[0].put(KEY_LAYOUT_UPDATE_SIGMA_ROT             ,String.valueOf(1.0/2.0));
        configs[0].put(KEY_LAYOUT_UPDATE_ENABLED               ,"false");
        configs[0].put(KEY_LAYOUT_UPDATE_DEPTH                 ,"1");
        configs[0].put(KEY_LAYOUT_UPDATE_METHOD                ,KEY_LAYOUT_UPDATE_METHOD_NEIGHBORS_ONLY);
        configs[0].put(KEY_LAYOUT_UPDATE_OPTIMIZE_ALGORITHM_ENABLED,"false");
        configs[0].put(KEY_LAYOUT_UPDATE_OPTIMIZE_ALGORITHM_CONFIG,lu_optimizeConfig.clone());
        configs[0].put(KEY_LAYOUT_UPDATE_CLUSTERING_ENABLED              ,"false");
        configs[0].put(KEY_LAYOUT_UPDATE_CLUSTERING_INIT_TEMPERATURE     ,"15.0");
        configs[0].put(KEY_LAYOUT_UPDATE_CLUSTERING_FORCE_SCALING_FACTOR ,"0.1");
        configs[0].put(KEY_LAYOUT_UPDATE_CLUSTERING_FACTOR               ,"8.0");
        configs[0].put(KEY_LAYOUT_UPDATE_METHOD_PERIMETER_INIT_SIZE      ,"100.0");
        configs[0].put(KEY_LAYOUT_UPDATE_METHOD_PERIMETER_SIZE_INC       ,"20.0");
        
        configs[1].put(KEY_CONFIG_NAME           ,"Long running Values");

⌨️ 快捷键说明

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