|
What this is
This file is included in the DevDaily.com
"Java Source Code
Warehouse" project. The intent of this project is to help you "Learn
Java by Example" TM.
Other links
The source code
/*
* OptionGroup.java - Option pane group
* :tabSize=8:indentSize=8:noTabs=false:
* :folding=explicit:collapseFolds=1:
*
* Copyright (C) 2000 mike dillon
* Portions copyright (C) 2003 Slava Pestov
*
* 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 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.
*/
package org.gjt.sp.jedit;
import java.util.*;
import org.gjt.sp.util.Log;
/**
* A set of option panes shown in one branch in the options dialog.
*
* Plugins should not create instances of this class anymore. See
* {@link EditPlugin} for information on how jEdit obtains and constructs
* option pane instances.
*
* @author Mike Dillon
* @version $Id: OptionGroup.java,v 1.10 2003/06/27 20:02:05 spestov Exp $
*/
public class OptionGroup
{
//{{{ OptionGroup constructor
/**
* Creates an option group.
* @param name The internal name of the option group, used to key a
* property options.name.label which is the
* label displayed in the options dialog.
* @see jEdit#getProperty(String)
*/
public OptionGroup(String name)
{
this.name = name;
label = jEdit.getProperty("options." + name + ".label");
members = new Vector();
} //}}}
//{{{ OptionGroup constructor
/**
* Creates an option group.
* @param label The label
* @param options A whitespace-separated list of option pane names
* @since jEdit 4.2pre2
*/
public OptionGroup(String name, String label, String options)
{
this.name = name;
this.label = label;
members = new Vector();
StringTokenizer st = new StringTokenizer(options);
while(st.hasMoreTokens())
{
String pane = st.nextToken();
addOptionPane(pane);
}
} //}}}
//{{{ getName() method
public String getName()
{
return name;
} //}}}
//{{{ getLabel() method
/**
* Returns the option group's human-readable label.
* @since jEdit 4.2pre1
*/
public String getLabel()
{
return label;
} //}}}
//{{{ addOptionGroup() method
public void addOptionGroup(OptionGroup group)
{
insertionSort(group.getLabel(),group);
} //}}}
//{{{ addOptionPane() method
public void addOptionPane(OptionPane pane)
{
String label = jEdit.getProperty("options."
+ pane.getName() + ".label","NO LABEL PROPERTY: "
+ pane.getName());
insertionSort(label,pane);
} //}}}
//{{{ addOptionPane() method
public void addOptionPane(String pane)
{
String label = jEdit.getProperty("options."
+ pane + ".label","NO LABEL PROPERTY: "
+ pane);
insertionSort(label,pane);
} //}}}
//{{{ getMembers() method
public Enumeration getMembers()
{
return members.elements();
} //}}}
//{{{ getMember() method
public Object getMember(int index)
{
return (index >= 0 && index < members.size())
? members.elementAt(index) : null;
} //}}}
//{{{ getMemberIndex() method
public int getMemberIndex(Object member)
{
return members.indexOf(member);
} //}}}
//{{{ getMemberCount() method
public int getMemberCount()
{
return members.size();
} //}}}
//{{{ setSort() method
/**
* Sets if the members of this group should be sorted.
* @since jEdit 4.2pre3
*/
public void setSort(boolean sort)
{
this.sort = sort;
} //}}}
//{{{ Private members
private String name;
private String label;
private Vector members;
private boolean sort;
//{{{ insertionSort() method
private void insertionSort(String newLabel, Object newObj)
{
if(sort)
{
for(int i = 0; i < members.size(); i++)
{
Object obj = members.elementAt(i);
String label;
if(obj instanceof OptionPane)
{
String name = ((OptionPane)obj).getName();
label = jEdit.getProperty("options."
+ name + ".label","NO LABEL PROPERTY: "
+ name);
}
else if(obj instanceof String)
{
label = jEdit.getProperty("options."
+ obj + ".label","NO LABEL PROPERTY: "
+ obj);
}
else if(obj instanceof OptionGroup)
label = ((OptionGroup)obj).getLabel();
else
throw new InternalError();
if(newLabel.compareTo(label) < 0)
{
members.insertElementAt(newObj,i);
return;
}
}
}
members.addElement(newObj);
} //}}}
//}}}
}
|