lookandfeelchooser.java

来自「JavaExplorer是一个独立于平台的浏览器」· Java 代码 · 共 231 行

JAVA
231
字号
/*
 * Created on 16 oct. 03
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package javaexplorer.util.laf;

import java.io.Serializable;

import javaexplorer.util.Log;
import javaexplorer.util.buffer.*;

import objectxml.*;

import javaexplorer.util.comparator.ModelComparator;

/**
 * @author veeb7280
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class LookAndFeelChooser extends Buffer implements Xmlizable, Serializable {
  
  private LookAndFeelModel _currentModel = new LookAndFeelModel(); 

  private static LookAndFeelChooser _chooser = new LookAndFeelChooser();
  
  
  /**
   * Constructeur par d閒aut n閏essaire pour la Xmlisation
   *
   */
  public LookAndFeelChooser(){
    setComparator(new ModelComparator());
  }
  
  
  public LookAndFeelModel getModel(String modelName){
    if( modelName == null ) return null;
    for( int i = 0; i < length(); i++ ){
      LookAndFeelModel model = (LookAndFeelModel)getAt(i);
      if( modelName.equals(model.getModelName())){
        return model;
      }
    }
    return null;
  }
  
  public void removeByName(String modelName){
    LookAndFeelModel tmpModel = new LookAndFeelModel();
    tmpModel.setModelName(modelName);
    remove(tmpModel);
  }
  
  
  public LookAndFeelModel getCurrentModel(){
    if( _currentModel == null ){
      return new LookAndFeelModel();
    }
    return _currentModel;
  }
  
  public void setCurrentModel(LookAndFeelModel model){
    add(model);
    _currentModel = model;  
  }
  
  
  public LookAndFeelModel[] get(){
    Object[] obj = getArray();
    if( obj == null ) return null;
    LookAndFeelModel[] list = new LookAndFeelModel[ obj.length ];
    System.arraycopy(obj, 0, list, 0, obj.length);
    return list;
  }
  
  
  /* (non-Javadoc)
   * @see objectxml.Xmlizable#writeXMLProperties()
   */
  public XMLContent writeXMLProperties() {
    XMLContent root = new XMLContent("ClassName", getClass().getName());

    //Pas de param鑤res constructeurs
    //Propri閠閟
    XMLContent content = new XMLContent("Properties");
    XMLContent xc = new XMLContent("Current Model");
    xc.add(_currentModel.writeXMLProperties());
    content.add(xc);
    
    xc = new XMLContent("Model List");
    //On rajoute de toute facon le mod鑜e par d閒aut
    add(new LookAndFeelModel());
    for(int i = 0; i < length(); i++ ){
      xc.add(((LookAndFeelModel)getAt(i)).writeXMLProperties());
    }
    content.add(xc);
    root.add(content);
    return root;
  }
  /* (non-Javadoc)
   * @see objectxml.Xmlizable#readXMLProperties(objectxml.XMLContent)
   */
  public void readXMLProperties(XMLContent content) {
    if (content == null) {
        return;
    }    
    XMLContent prop = null;
    prop = content.getChild("Current Model");

    LookAndFeelModel currentModel = null;
    try{
        if (prop != null) {
            ObjectXml ox = new ObjectXml();                
            //On r閏up鑢e le premier fils qui est la valeur Options
            currentModel = (LookAndFeelModel) (ox.xmlContentToXmlizable((prop.getChildren())[0]));
            if( currentModel != null ) this.setCurrentModel( currentModel );
        }
        else{
            Log.addDebug("No Current Look and Feel found using default");
            this.setCurrentModel(new LookAndFeelModel());
        }
            
    }catch(Exception e ){
        javaexplorer.util.Log.addError(e);
        Log.addDebug("Incorrect Look And Feel Format. Using Default");
        this.setCurrentModel(new LookAndFeelModel());
    }
    
    //R閏up閞ation de la liste des modeles stock閟
    prop = content.getChild("Model List");
    XMLContent[] list = prop.getChildren();
    if( list != null ){
      for( int i = 0; i < list.length; i++ ){
        LookAndFeelModel model = getFromContent(list[i]);
        add(model); 
      }
    }
    
  }
  
  
  private LookAndFeelModel getFromContent(XMLContent prop){
    LookAndFeelModel model = null;    
    try{
        if (prop != null) {
            ObjectXml ox = new ObjectXml();                
            //On r閏up鑢e le premier fils qui est la valeur Options
            model = (LookAndFeelModel) (ox.xmlContentToXmlizable(prop));
        }
    }catch(Exception e ){
        javaexplorer.util.Log.addError(e);
        Log.addDebug("Incorrect Look And Feel Format from XMLContent " + prop);
        model = null;
    }
    return model;
    
  }
  
  /*
  public static void main(String argv[]){
    LookAndFeelChooser lfc = new LookAndFeelChooser();
    LookAndFeelModel model = null;
    
    
    model = new LookAndFeelModel();
    model.setModelName("Toto");
    lfc.add(model);    
       
    model = new LookAndFeelModel();
    model.setModelName("Mon beau modele");
    lfc.add(model);    
    
    model = new LookAndFeelModel();
    lfc.add(model);
    
    for( int i = 0; i < lfc.length(); i++ ){
      Log.addDebug(lfc.getAt(i));
    }
       
       
    //Essai du retour de buffer
    Log.addDebug(lfc.get()); 
    
  }
  */
  
  public LookAndFeelChooser duplicate(){
    //Retourne un chooser ayant les caracteristiques de l'objet en cours
    LookAndFeelChooser lfc = new LookAndFeelChooser();
    LookAndFeelModel lfm = null;
    for( int i = 0; i < length(); i++ ){
      lfm = new LookAndFeelModel();
      lfm.applyModelValues((LookAndFeelModel) getAt(i));
      lfc.add(lfm);
    }
    //Assignation de l'item par d閒aut
    lfc.setCurrentModel(lfc.getModel(getCurrentModel().getModelName()));
    
    return lfc;    
  }
  
  
  
  public static LookAndFeelChooser getChooser(){
    return _chooser;
  }
  
  public static void updateChooser(LookAndFeelChooser chooser){
  	if( chooser == null ) return;
    _chooser.clear();
    LookAndFeelModel lfm = null;
    for( int i = 0; i < chooser.length(); i++ ){
      lfm = new LookAndFeelModel();
      lfm.applyModelValues((LookAndFeelModel) chooser.getAt(i));
      _chooser.add(lfm);
    }
    //Assignation de l'item par d閒aut
    _chooser.setCurrentModel(_chooser.getModel(chooser.getCurrentModel().getModelName()));
    
  }
  
  
  public static LookAndFeelModel getLaFModel(){
    return _chooser.getCurrentModel();
  }
  
  }

⌨️ 快捷键说明

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