/* Copyright (C) 2008 Christian Schneider
*
* This file is part of Nomad.
*
* Nomad 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.
*
* Nomad 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 Nomad; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package net.sf.nmedit.jtheme.component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import net.sf.nmedit.jtheme.JTContext;
import net.sf.nmedit.jtheme.cable.JTCableManager;
public class JTLayerRoot extends JTBaseComponent
{
private boolean ignoreMouseEvents = true;
/**
*
*/
private static final long serialVersionUID = 5019537573216055625L;
public JTLayerRoot(JTContext context)
{
super(context);
setOpaque(false);
setJTFlag(FLAG_INVALIDATE, true);
setJTFlag(FLAG_VALIDATE, true);
setJTFlag(FLAG_REVALIDATE, true);
setJTFlag(FLAG_VALIDATE_TREE, true);
}
public boolean contains(int x, int y)
{
// ensure this component gets no mouse events or similar events
if (ignoreMouseEvents)
return false;
else
return super.contains(x, y);
}
private JTCableManager cableManager;
protected void setCableManager(JTCableManager cableManager)
{
JTCableManager oldManager = this.cableManager;
if (oldManager != cableManager)
{
if (oldManager != null)
{
oldManager.setOwner(null);
oldManager.setView(null);
}
this.cableManager = cableManager;
if (cableManager != null)
{
cableManager.setOwner(this);
cableManager.setView(this);
}
}
}
protected void paintComponent(Graphics g)
{
paintCables(g);
}
protected void paintCables(Graphics g)
{
if (cableManager != null)
{
Graphics gs = g.create();
try
{
cableManager.paintCables((Graphics2D) gs);
}
finally
{
gs.dispose();
}
}
}
public void setSize(Dimension r) {
super.setSize(r);
}
public void ignoreMouseEvents() {
ignoreMouseEvents = true;
}
public void captureMouseEvents() {
ignoreMouseEvents = false;
}
}