package com.dbxml.db.admin.xmleditor;

/*
 * dbXML - Native XML Database
 * Copyright (C) 1999-2004  The dbXML Group, L.L.C.
 *
 * 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.
 *
 * $Id: NodeEditorBase.java,v 1.2 2004/02/12 00:17:55 bradford Exp $
 */

import java.awt.Color;
import javax.swing.JPanel;
import javax.swing.border.Border;
import org.w3c.dom.Node;

/**
 * NodeEditorBase
 */

public abstract class NodeEditorBase extends JPanel implements NodeEditor {
   XMLEditor owner;
   NodeEditor parent;
   boolean showBorder = true;
   Node node;
   JPanel editors;

   public NodeEditorBase() {
      setAutoscrolls(true);
      setOpaque(false);
      setShowBorder(true);
   }

   public NodeEditorBase(XMLEditor owner, NodeEditor parent, Node node) {
      this.owner = owner;
      this.parent = parent;
      setAutoscrolls(true);
      setOpaque(false);
      setNode(node);
      setShowBorder(true);
   }

   public NodeEditorBase(XMLEditor owner) {
      this.owner = owner;
      setAutoscrolls(true);
      setOpaque(false);
      setShowBorder(false);
   }

   public void setOwner(XMLEditor owner) {
      this.owner = owner;
      setShowBorder(showBorder);
   }

   public void setNode(Node node) {
      this.node = node;
   }

   public void setBackground(Color background) {
      super.setBackground(background);
      setOpaque(true);
   }

   public Node getNode() {
      return node;
   }

   public void setShowBorder(boolean showBorder) {
      this.showBorder = showBorder;
      Border b = null;
      if ( showBorder && owner != null ) {
         if ( node != null && !owner.showRootElement && owner.rootEdit == parent )
            b = XMLEditor.TopBorder;
         else
            b = owner.outerBorder;
      }
      setBorder(showBorder ? b : null);
   }

   public boolean isShowBorder() {
      return showBorder;
   }
}

