package net.sf.colorer; import java.util.Vector; /** * HRC FileType (or prototype) instance * @ingroup colorer */ public class FileType{ long iptr; String name; String group; String description; String[] parameters; FileType(long _iptr, final String _name, final String _group, final String _description) { iptr = _iptr; name = _name; group = _group; description = _description; }; /** * Public name of file type (HRC 'name' attribute) * * @return File type Name */ public String getName() { return name; } /** * Public group name of file type (HRC 'group' attribute) * * @return File type Group */ public String getGroup() { return group; } /** * Public description of file type (HRC 'description' attribute) * * @return File type Description */ public String getDescription() { return description; } /** * Returns the base scheme of this file type. Basically, this is the scheme * with same public name, as it's type. @return File type base scheme, to be * used as root scheme of text parsing. */ public Scheme getBaseScheme() { return getBaseScheme(iptr); } private native Scheme getBaseScheme(long iptr); /** * Returns all available parameters for this file type. Each element in * enumeration contains a reference to parameter name. */ public String[] getParameters() { if (parameters == null) { Vector list = new Vector(); for(int idx = 0; ; idx++) { String par = enumerateParameters(iptr, idx); if (par == null) { break; } list.add(par); } parameters = (String[])list.toArray(new String[0]); } return parameters; } native String enumerateParameters(long iptr, int idx); /** * Retrieves parameter's user description string * @param name * @return Description for this parameter, can be null. */ public String getParameterDescription(String name) { return getParameterDescription(iptr, name); } native String getParameterDescription(long iptr, String name); /** * Returns parameter's value of this file type. Parameters are stored in * prototypes as * * <pre> * * \<parameters> * \<param name="name" value="value" description="..."/> * \</parameter> * * </pre> * * Parameters can be used to store application specific information about * each type of file. Also parameters are accessible from the HRC definition * using <code>if/unless</code> attributes of scheme elements. This allows * portable customization of HRC loading. * * @param name * Parameter's name * @return Value (changed or default) of this parameter */ public String getParameterValue(String name) { return getParamValue(iptr, name); } native String getParamValue(long iptr, String name); /** * Returns parameter's default value of this file type. Default values are * the values, explicitly pointed with \c value attribute. * * @param name * Parameter's name * @return Default value of this parameter */ public String getParameterDefaultValue(String name) { return getParamDefaultValue(iptr, name); } native String getParamDefaultValue(long iptr, String name); /** * Changes value of the parameter with specified name. Note, that changed * parameter values are not stored in HRC base - they remains active only * during this HRC session. Application should use its own mechanism to save * these values between sessions (if needed). * * @param name * Parameter's name * @param value * New value of this parameter. */ public void setParameterValue(String name, String value) { setParamValue(iptr, name, value); } native void setParamValue(long iptr, String name, String value); }; /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the Colorer Library. * * The Initial Developer of the Original Code is * Cail Lomecb <cail@nm.ru>. * Portions created by the Initial Developer are Copyright (C) 1999-2003 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */