/* * ToolBarManager.java - Handles tool bars for the View * :tabSize=4:indentSize=4:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2002 mike dillon * * 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.gui; //{{{ Imports import java.awt.*; import java.util.*; import java.util.List; import org.gjt.sp.jedit.*; //}}} /** Handles toolbars for a single View */ public class ToolBarManager { //{{{ ToolBarManager constructor public ToolBarManager(Container top, Container bottom) { this.top = top; this.bottom = bottom; } //}}} //{{{ addToolBar() method public void addToolBar(int group, int layer, Component toolbar) { Entry entry = new Entry(layer, toolbar); if (group == View.TOP_GROUP) addToolBar(top, topToolBars, entry); else if (group == View.BOTTOM_GROUP) addToolBar(bottom, bottomToolBars, entry); else throw new InternalError("Invalid tool bar group"); } //}}} //{{{ removeToolBar() method public void removeToolBar(Component toolbar) { removeToolBar(top, topToolBars, toolbar); removeToolBar(bottom, bottomToolBars, toolbar); } //}}} //{{{ Private members //{{{ Instance variables private final Container top; private final Container bottom; private final List<Entry> topToolBars = new ArrayList<Entry>(); private final List<Entry> bottomToolBars = new ArrayList<Entry>(); //}}} //{{{ addToolBar() method private static void addToolBar(Container group, List<Entry> toolbars, Entry entry) { // See if we should place this toolbar before any others for(int i = 0; i < toolbars.size(); i++) { if(entry.layer > toolbars.get(i).layer) { toolbars.add(i,entry); group.add(entry.toolbar,i); return; } } // Place the toolbar at the bottom of the group toolbars.add(entry); group.add(entry.toolbar); } //}}} //{{{ removeToolBar() method private static void removeToolBar(Container group, List<Entry> toolbars, Component toolbar) { for(int i = 0; i < toolbars.size(); i++) { if(toolbar == toolbars.get(i).toolbar) { group.remove(toolbar); toolbars.remove(i); return; } } } //}}} //}}} //{{{ Entry class private static class Entry { int layer; Component toolbar; Entry(int layer, Component toolbar) { this.layer = layer; this.toolbar = toolbar; } } //}}} }