/* Copyright 2006 Eric Hakenholz This file is part of C.a.R. software. C.a.R. is a 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, version 3 of the License. C.a.R. 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, see . */ package eric.bar; import eric.GUI.palette.PaletteManager; import eric.GUI.pipe_tools; import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import eric.JEricPanel; import rene.gui.Global; import rene.zirkel.objects.ConstructionObject; import eric.controls.JCanvasPanel; import eric.macros.CreateMacroDialog; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.ArrayList; import javax.swing.AbstractAction; import javax.swing.KeyStroke; /** * * @author erichake */ public class JPropertiesBar extends JFrame implements MouseListener, MouseMotionListener { static private int Bx=0, By=0, Bwidth=1078, Bheight=60; CPane CP; TitleBar titlebar; static JControlProperties Content; private MouseEvent pressed; private Point location; private static JPropertiesBar JPB=null; public JPropertiesBar() { JPB=this; Bx=Global.getParameter("props.paletteX", 0); if (Bx v){ if ((JPB!=null)&&(v!=null)&&(v.size()>0)) { JPB.setObjects(v); } } static public void EditObject(final ConstructionObject o) { EditObject(o, true, true); } static public void EditObject(final ConstructionObject o, final boolean forcevisible, final boolean forcefocus) { if ((JPB!=null)&&(o!=null)) { JPB.setObject(o, forcevisible, forcefocus); } } static public void EditObject(final JCanvasPanel jcp) { if ((JPB!=null)&&(jcp.O!=null)) { JPB.setObject(jcp); } } static public void SelectPropertiesTab(final int i) { JPB.selectTab(i); } static public void RefreshBar() { if (JPB!=null) { JPB.refresh(); } } // Only called at first launch (applet or application) : static public void CreatePropertiesBar() { JPB=new JPropertiesBar(); JPB.showme(false); } private void setObjects(ArrayList v) { showme(true); Content.setObjects(v); } public void setObject(final ConstructionObject O, final boolean forcevisible, final boolean forcefocus) { if (forcevisible) { showme(true); } if ((!this.isVisible())&&(!forcefocus)) { return; } Content.setObject(O, forcevisible, forcefocus); } public void selectTab(final int i) { Content.selectTab(i); } public void setObject(final JCanvasPanel jcp) { showme(true); Content.setObject(jcp); } private static void fixsize(final JComponent cp, final int w, final int h) { final Dimension d=new Dimension(w, h); cp.setMaximumSize(d); cp.setMinimumSize(d); cp.setPreferredSize(d); cp.setSize(d); } private class TitleBar extends JEricPanel { ImageIcon closeimg=new ImageIcon(getClass().getResource( "gui/Pclose.png")); ImageIcon closeoverimg=new ImageIcon(getClass().getResource( "gui/Pcloseover.png")); ImageIcon myicon=new ImageIcon(getClass().getResource( "gui/titlebar.png")); JButton closebtn; JPropertiesBar Mother; @Override public void paintComponent(final java.awt.Graphics g) { final java.awt.Dimension d=this.getSize(); g.drawImage(myicon.getImage(), 0, 0, d.width, d.height, this); super.paintComponent(g); } public TitleBar(final JPropertiesBar parent, final int width) { Mother=parent; this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); // this.setAlignmentX(0F); this.setOpaque(false); fixsize(this, width, Bheight); this.addMouseListener(parent); this.addMouseMotionListener(parent); closebtn=new JButton(closeimg); closebtn.setRolloverIcon(closeoverimg); closebtn.setBorder(BorderFactory.createEmptyBorder()); closebtn.setOpaque(false); closebtn.setContentAreaFilled(false); closebtn.addMouseListener(new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { // Mother.setVisible(false); Mother.showme(false); } }); this.add(closebtn); } } private class CPane extends JEricPanel { public CPane() { this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); this.setOpaque(false); this.setBorder(BorderFactory.createLineBorder( new Color(80, 80, 80), 1)); } } private void setBarLocation(final MouseEvent me) { location=getLocation(location); int x=location.x-pressed.getX()+me.getX(); if (xGlobal.getScreenX()+Global.getScreenW()-20) { x=Global.getScreenX()+Global.getScreenW()-Bwidth; } setLocation(x, Global.getScreenY()); Toolkit.getDefaultToolkit().sync(); } @Override public void mouseDragged(final MouseEvent me) { setBarLocation(me); } @Override public void mousePressed(final MouseEvent me) { pressed=me; } @Override public void mouseMoved(final MouseEvent e) { } @Override public void mouseReleased(final MouseEvent e) { setBarLocation(e); Global.setParameter("props.paletteX", getLocation().x); Bx=getLocation().x; By=getLocation().y; pipe_tools.setWindowLocation(); pipe_tools.toFront(); } @Override public void mouseClicked(final MouseEvent e) { } @Override public void mouseEntered(final MouseEvent e) { } @Override public void mouseExited(final MouseEvent e) { } }