Package org.beryl.gui.widgets

Source Code of org.beryl.gui.widgets.TabbedPane

/*
* Beryl - A web platform based on XML, XSLT and Java
* This file is part of the Beryl XML GUI
*
* Copyright (C) 2004 Wenzel Jakob <wazlaf@tigris.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-3107  USA
*/
package org.beryl.gui.widgets;

import java.awt.Component;
import java.util.HashMap;

import javax.swing.Icon;
import javax.swing.JTabbedPane;

import org.beryl.gui.GUIException;
import org.beryl.gui.Widget;

public class TabbedPane extends Widget {
  private JTabbedPane pane = null;
  private HashMap paneInfo = null;
  private boolean isConstructed = false;

  public TabbedPane(Widget parent, String name) throws GUIException {
    super(parent, name);
    pane = new JTabbedPane();
    paneInfo = new HashMap();
  }

  public void addChild(Widget widget, Object constraint) throws GUIException {
    String name = widget.getName();
    if (constraint != null)
      throw new GUIException("Anchors not supported inside a tabbed pane");
    if (!(widget instanceof Panel))
      throw new GUIException("Only panels can be added to a tabbed pane");

    String title = (String) paneInfo.get(name + ".title");
    if (title == null)
      title = "(unnamed)";

    pane.addTab(
      title,
      (Icon) paneInfo.get(name + ".icon"),
      widget.getWidget(),
      (String) paneInfo.get(name + ".tooltip"));
    addChild(widget);
  }

  public void removeChildWidget(Widget widget) throws GUIException {
    pane.remove(widget.getWidget());
    super.removeChildWidget(widget);
  }


  public void setProperty(String name, Object value) throws GUIException {
    if (name.endsWith(".title") || name.endsWith(".icon") || name.endsWith(".tooltip")) {
      String widgetName = name.substring(0, name.indexOf('.'));
     
      paneInfo.put(name, value);
      if (isConstructed) {
        Widget widget = getChildWidgetByName(widgetName);
        if (widget != null) {
          int index = pane.indexOfComponent(widget.getWidget());
          if (index == -1)
            throw new GUIException("That widget is not a child of the tabbed pane");
          pane.removeTabAt(index);

          String title = (String) paneInfo.get(widgetName + ".title");
          if (title == null)
            title = "(unnamed)";
          pane.insertTab(
            title,
            (Icon) paneInfo.get(widgetName + ".icon"),
            widget.getWidget(),
            (String) paneInfo.get(widgetName + ".tooltip"), index);
        } else {
          throw new GUIException("A tab with that name was not found");
        }
      }
    } else {
      super.setProperty(name, value);
    }
  }

  public void finalizeConstruction() throws GUIException {
    isConstructed = true;
  }


  public Component getWidget() {
    return pane;
  }
}
TOP

Related Classes of org.beryl.gui.widgets.TabbedPane

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.