/* 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; import eric.GUI.pipe_tools; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Stroke; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.BoxLayout; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JLabel; import eric.JEricPanel; import javax.swing.SwingConstants; import net.java.dev.colorchooser.ColorChooser; import net.java.dev.colorchooser.Palette; import rene.gui.Global; /** * * @author erichake */ public class JGlobalPreferencesColor extends JEricPanel implements MouseListener, MouseMotionListener { /** * */ private static final long serialVersionUID = 1L; private final ColorChooser cchooser; private Palette Pal; int PW = 193; int PaletteType; int xx, yy; colorline mycolorpickerline; JGlobalPreferencesColor me; JComboBox JCB; JLabel comment; JEricPanel colorsample = new JEricPanel(); @Override public void paintComponent(final java.awt.Graphics g) { super.paintComponent(g); } private void fixsize(final JComponent cp, final Dimension d) { cp.setMaximumSize(d); cp.setMinimumSize(d); cp.setPreferredSize(d); cp.setSize(d); } /** Creates a new instance of JColorPanel */ public JGlobalPreferencesColor() { me = this; xx = -1; yy = -1; PaletteType = Global.getParameter("prefs.colorbackgroundPal", 1); cchooser = new ColorChooser(); // Pal=cchooser.getPalettes()[4]; this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); this.setAlignmentX(0.5f); this.setOpaque(false); this.add(margintop(5)); JCB = new JComboBox(); JCB.setMaximumRowCount(5); JCB.setOpaque(false); JCB.setFocusable(false); JCB.setEditable(false); JCB.setAlignmentX(0.5f); JCB.setFont(new Font("System", 0, 11)); JCB.addItem(Loc("saturated1")); JCB.addItem(Loc("desaturated1")); JCB.addItem(Loc("saturated2")); JCB.addItem(Loc("desaturated2")); JCB.addItem(Loc("constants")); JCB.setSelectedIndex(PaletteType); JCB.addItemListener(new ItemAdapter()); final JEricPanel JCBpanel = new JEricPanel(); JCBpanel.setLayout(new BoxLayout(JCBpanel, BoxLayout.X_AXIS)); JCBpanel.setAlignmentX(0.5f); JCBpanel.setOpaque(false); fixsize(JCBpanel, PW, 24); JCBpanel.add(margin(5)); fixsize(JCB, PW - 10, 22); JCBpanel.add(JCB); this.add(JCBpanel); mycolorpickerline = new colorline(PaletteType); this.add(mycolorpickerline); comment = new JLabel("coucou"); comment.setOpaque(false); comment.setAlignmentX(0.5f); comment.setFont(new Font("System", 0, 9)); fixsize(comment, PW, 14); comment.setHorizontalAlignment(SwingConstants.CENTER); this.add(comment); fixsize(colorsample, new Dimension(80, 80)); colorsample.setAlignmentX(0.5f); this.add(colorsample); } public String Loc(final String s) { return Global.Loc("palette.colors." + s); } class ItemAdapter implements ItemListener { public void itemStateChanged(final ItemEvent evt) { if (evt.getStateChange() == ItemEvent.SELECTED) { me.remove(mycolorpickerline); mycolorpickerline = new colorline(JCB.getSelectedIndex()); Global.setParameter("prefs.colorbackgroundPal", JCB .getSelectedIndex()); me.add(mycolorpickerline, 2); // JDialog father=GetDialog(me); // father.validate(); // father.pack(); int x = Global.getParameter("prefs.colorbackgroundx", 154); int y = Global.getParameter("prefs.colorbackgroundy", 5); x = x * Pal.getSize().width / mycolorpickerline.mycolors.getSize().width; y = y * Pal.getSize().height / mycolorpickerline.mycolors.getSize().height; final Color mycolor = Pal.getColorAt(x, y); if (mycolor != null) { Global.setParameter("prefs.colorbackground", mycolor); Global.setParameter("prefs.colorbackgroundx", x); Global.setParameter("prefs.colorbackgroundy", y); } me.repaint(); } } } public JDialog GetDialog(final Component c) { if (c instanceof JDialog || null == c) return c == null ? null : (JDialog) c; return GetDialog(c.getParent()); } class colorline extends JEricPanel { /** * */ private static final long serialVersionUID = 1L; JEricPanel mymargin; onlycolors mycolors; colorline(final int ptype) { PaletteType = ptype; Pal = cchooser.getPalettes()[ptype]; this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); this.setAlignmentX(0.5f); mymargin = margin(0); // if (PW>Pal.getSize().width){ // fixsize(mymargin,(PW-Pal.getSize().width)/2,1); // }; this.add(mymargin); mycolors = new onlycolors(ptype); this.add(mycolors); this.setOpaque(false); } } private class onlycolors extends JEricPanel { /** * */ private static final long serialVersionUID = 1L; Image bimage; @Override public void paintComponent(final java.awt.Graphics g) { super.paintComponent(g); final Dimension d = this.getSize(); final int w = d.width; final int h = d.height; g.drawImage(bimage, 0, 0, w, h, this); final Color mycolor = Global.getParameter("prefs.colorbackground", new Color(231, 238, 255)); cchooser.setColor(mycolor); colorsample.setBackground(mycolor); // ZF.ZC.setBackground(mycolor); // ZF.ZC.repaint(); int x = Global.getParameter("prefs.colorbackgroundx", 154); int y = Global.getParameter("prefs.colorbackgroundy", 5); if (PaletteType == 4) { x = ((int) (x / 12)) * 12 + 6; y = ((int) (y / 12)) * 12 + 6; } final Graphics2D g2 = (Graphics2D) g; // AlphaComposite ac = // AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f); // g2.setComposite(ac); g2.setColor(new Color(0, 0, 0)); Stroke stroke = new BasicStroke(1f); g2.setStroke(stroke); g2.drawRect(x - 4, y - 4, 8, 8); stroke = new BasicStroke(1f); g2.setStroke(stroke); g2.setColor(new Color(255, 255, 255)); g2.drawRect(x - 3, y - 3, 6, 6); // g.drawRect(x-5,y-5,10,10); comment.setText(Pal.getNameAt(x, y)); } onlycolors(final int ptype) { final int w = (PW < Pal.getSize().width) ? PW : Pal.getSize().width; fixsize(this, w, Pal.getSize().height); // bimage=JPM.MW.createImage(Pal.getSize().width,Pal.getSize().height); bimage = this.createImage(Pal.getSize().width, Pal.getSize().height); Pal.paintTo(bimage.getGraphics()); this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); this.setAlignmentX(0.5f); this.setOpaque(false); this.addMouseMotionListener(me); this.addMouseListener(me); } // public void changePal(int i){ // // Pal=cchooser.getPalettes()[i]; // int w=(PW mycolorpickerline.mycolors.getSize().width) x = mycolorpickerline.mycolors.getSize().width; if (x < 0) x = 0; if (y > mycolorpickerline.mycolors.getSize().height) y = mycolorpickerline.mycolors.getSize().height; if (y < 0) y = 0; Global.setParameter("prefs.colorbackgroundx", x); Global.setParameter("prefs.colorbackgroundy", y); x = x * Pal.getSize().width / mycolorpickerline.mycolors.getSize().width; y = y * Pal.getSize().height / mycolorpickerline.mycolors.getSize().height; final Color mycolor = Pal.getColorAt(x, y); if (mycolor != null) { Global.setParameter("prefs.colorbackground", mycolor); mycolorpickerline.mycolors.repaint(); } } public void mouseReleased(final MouseEvent e) { xx = -1; yy = -1; } public void mouseEntered(final MouseEvent e) { } public void mouseExited(final MouseEvent e) { } public void mouseDragged(final MouseEvent e) { mousePressed(e); } public void mouseMoved(final MouseEvent e) { } }