Package com.aelitis.azureus.ui.swt.skin

Source Code of com.aelitis.azureus.ui.swt.skin.SWTSkinPropertiesClone

/*
* Created on Jun 26, 2006 7:25:11 PM
* Copyright (C) 2006 Aelitis, All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* AELITIS, SAS au capital de 46,603.30 euros
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*/
package com.aelitis.azureus.ui.swt.skin;

import java.util.ResourceBundle;

import org.eclipse.swt.graphics.Color;

import org.gudy.azureus2.core3.util.Debug;

/**
* Simple extension of SWTSkinProperties that first checks the original
* cloning id before checking the keys that it's cloning.
* <P>
* Cloned Skin Objects will be calling this class with a Config ID of "" plus
* whatever property name string they add on.
*
* @author TuxPaper
* @created Jun 26, 2006
*
*/
public class SWTSkinPropertiesClone
  implements SWTSkinPropertiesParam
{
  private static final String IGNORE_NAME = ".type";

  private static final boolean DEBUG = true;

  private final SWTSkinProperties properties;

  private final String sCloneConfigID;

  private final String sTemplateConfigID;

  private final String[] sCloneParams;

  /**
   * Initialize
   *
   * @param properties Where to read properties from
   * @param sCloneConfigID The config key that told us to clone something
   */
  public SWTSkinPropertiesClone(SWTSkinProperties properties,
      String sCloneConfigID, String[] sCloneParams) {
    this.properties = properties;
    this.sCloneConfigID = sCloneConfigID;
    this.sCloneParams = sCloneParams;
    this.sTemplateConfigID = sCloneParams[0];
  }

  /**
   * @param name
   */
  private void checkName(String name) {
    if (name.startsWith(sTemplateConfigID)) {
      System.err.println(name + " shouldn't have template prefix of "
          + sTemplateConfigID + "; " + Debug.getStackTrace(true, false));
    }

    if (name.startsWith(sCloneConfigID)) {
      System.err.println(name + " shouldn't have clone prefix of "
          + sCloneConfigID + "; " + Debug.getStackTrace(true, false));
    }
  }

  public void addProperty(String name, String value) {
    properties.addProperty(sCloneConfigID + name, value);
  }

  // @see com.aelitis.azureus.ui.swt.skin.SWTSkinProperties#getColorWithAlpha(java.lang.String)
  public SWTColorWithAlpha getColorWithAlpha(String name) {
    if (name == null) {
      return null;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getColorWithAlpha(name);
    }


    SWTColorWithAlpha val = properties.getColorWithAlpha(sCloneConfigID + name);
    if (val != null) {
      return val;
    }

    return properties.getColorWithAlpha(sTemplateConfigID + name);
  }

  public Color getColor(String name) {
    if (name == null) {
      return null;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getColor(name);
    }


    Color val = properties.getColor(sCloneConfigID + name);
    if (val != null) {
      return val;
    }

    return properties.getColor(sTemplateConfigID + name);
  }

  public int[] getColorValue(String name) {
    if (name == null) {
      return new int[] { -1, -1, -1 };
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getColorValue(name);
    }

    if (!name.equals(IGNORE_NAME)) {
      int[] val = properties.getColorValue(sCloneConfigID + name);
      if (val[0] < 0) {
        return val;
      }
    }

    return properties.getColorValue(sTemplateConfigID + name);
  }

  public int getIntValue(String name, int def) {
    if (name == null) {
      return def;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getIntValue(name, def);
    }

    if (!name.equals(IGNORE_NAME)) {
      if (properties.getStringValue(sCloneConfigID + name) != null) {
        return properties.getIntValue(sCloneConfigID + name, def);
      }
    }
    return properties.getIntValue(sTemplateConfigID + name, def);
  }

  public String[] getStringArray(String name) {
    if (name == null) {
      return null;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getStringArray(name);
    }

    if (!name.equals(IGNORE_NAME)) {
      String[] val = properties.getStringArray(sCloneConfigID + name,
          sCloneParams);
      if (val != null) {
        return val;
      }
    }

    return properties.getStringArray(sTemplateConfigID + name, sCloneParams);
  }

  public String getStringValue(String name, String def) {
    if (name == null) {
      return def;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getStringValue(name, def);
    }
   
    if (!name.equals(IGNORE_NAME)) {
      String val = properties.getStringValue(sCloneConfigID + name,
          sCloneParams);
      if (val != null) {
        return val;
      }
    }

    return properties.getStringValue(sTemplateConfigID + name, sCloneParams,
        def);
  }

  public String getStringValue(String name) {
    if (name == null) {
      return null;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getStringValue(name);
    }

    if (!name.equals(IGNORE_NAME)) {
      String val = properties.getStringValue(sCloneConfigID + name,
          sCloneParams);
      if (val != null) {
        return val;
      }
    }

    return properties.getStringValue(sTemplateConfigID + name, sCloneParams);
  }

  public String[] getStringArray(String name, String[] params) {
    if (name == null) {
      return null;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getStringArray(name, params);
    }

    if (!name.equals(IGNORE_NAME)) {
      String[] val = properties.getStringArray(sCloneConfigID + name, params);
      if (val != null) {
        return val;
      }
    }

    return properties.getStringArray(sTemplateConfigID + name, params);
  }

  public String getStringValue(String name, String[] params, String def) {
    if (name == null) {
      return def;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getStringValue(name, params, def);
    }

    if (!name.equals(IGNORE_NAME)) {
      String val = properties.getStringValue(sCloneConfigID + name, params);
      if (val != null) {
        return val;
      }
    }

    return properties.getStringValue(sTemplateConfigID + name, params, def);
  }

  public String getStringValue(String name, String[] params) {
    if (name == null) {
      return null;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getStringValue(name, params);
    }

    if (!name.equals(IGNORE_NAME)) {
      String val = properties.getStringValue(sCloneConfigID + name, params);
      if (val != null) {
        return val;
      }
    }

    return properties.getStringValue(sTemplateConfigID + name, params);
  }

  public SWTSkinProperties getOriginalProperties() {
    return properties;
  }

  public String[] getParamValues() {
    return sCloneParams;
  }
 
  // @see com.aelitis.azureus.ui.skin.SkinProperties#getBooleanValue(java.lang.String, boolean)
  public boolean getBooleanValue(String name, boolean def) {
    if (name == null) {
      return def;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getBooleanValue(name, def);
    }

    if (!name.equals(IGNORE_NAME)) {
      if (properties.getStringValue(sCloneConfigID + name) != null) {
        return properties.getBooleanValue(sCloneConfigID + name, def);
      }
    }
    return properties.getBooleanValue(sTemplateConfigID + name, def);
  }
 
  // @see com.aelitis.azureus.ui.skin.SkinProperties#clearCache()
  public void clearCache() {
    properties.clearCache();
  }
 
  // @see com.aelitis.azureus.ui.skin.SkinProperties#contains(java.lang.String)
  public boolean hasKey(String name) {
    return properties.hasKey(name);
  }

  public Color getColor(String name, Color def) {
    Color color = getColor(name);
    if (color == null) {
      return def;
    }
    return color;
  }
 
  // @see com.aelitis.azureus.ui.skin.SkinProperties#getReferenceID(java.lang.String)
  public String getReferenceID(String name) {
    if (name == null) {
      return null;
    }
    if (DEBUG) {
      checkName(name);
    }
    if (name.length() > 0 && name.charAt(0) != '.') {
      return properties.getReferenceID(name);
    }

    if (!name.equals(IGNORE_NAME)) {
      String val = properties.getReferenceID(sCloneConfigID + name);
      if (val != null) {
        return val;
      }
    }

    return properties.getReferenceID(sTemplateConfigID + name);
  }
 
  // @see com.aelitis.azureus.ui.skin.SkinProperties#addResourceBundle(java.util.ResourceBundle)
  public void addResourceBundle(ResourceBundle subBundle, String skinPath) {
    properties.addResourceBundle(subBundle, skinPath);
  }
 
  public void addResourceBundle(ResourceBundle subBundle, String skinPath,
      ClassLoader loader) {
    properties.addResourceBundle(subBundle, skinPath,loader);
  }
  // @see com.aelitis.azureus.ui.skin.SkinProperties#getClassLoader()
  public ClassLoader getClassLoader() {
    return properties.getClassLoader();
  }
}
TOP

Related Classes of com.aelitis.azureus.ui.swt.skin.SWTSkinPropertiesClone

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.