162 lines
4.0 KiB
Java
162 lines
4.0 KiB
Java
/*
|
|
|
|
Copyright 2006 Rene Grothmann, modified by 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 <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
package rene.dialogs;
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Frame;
|
|
import java.awt.GridLayout;
|
|
import java.awt.Label;
|
|
import java.awt.Scrollbar;
|
|
import java.awt.event.AdjustmentEvent;
|
|
import java.awt.event.AdjustmentListener;
|
|
import java.awt.event.FocusEvent;
|
|
import java.awt.event.FocusListener;
|
|
|
|
import eric.JEricPanel;
|
|
|
|
import rene.gui.ButtonAction;
|
|
import rene.gui.CloseDialog;
|
|
import rene.gui.DoActionListener;
|
|
import rene.gui.Global;
|
|
import rene.gui.IntField;
|
|
import rene.gui.MyLabel;
|
|
import rene.gui.MyPanel;
|
|
import rene.gui.Panel3D;
|
|
|
|
class ColorScrollbar extends JEricPanel implements AdjustmentListener,
|
|
DoActionListener, FocusListener {
|
|
/**
|
|
*
|
|
*/
|
|
private static final long serialVersionUID = 1L;
|
|
public int Value;
|
|
ColorEditor CE;
|
|
Scrollbar SB;
|
|
IntField L;
|
|
|
|
public ColorScrollbar(final ColorEditor ce, final String s, final int value) {
|
|
CE = ce;
|
|
setLayout(new GridLayout(1, 0));
|
|
Value = value;
|
|
final JEricPanel p = new MyPanel();
|
|
p.setLayout(new GridLayout(1, 0));
|
|
p.add(new MyLabel(s));
|
|
p.add(L = new IntField(this, "L", Value, 4));
|
|
add(p);
|
|
add(SB = new Scrollbar(Scrollbar.HORIZONTAL, value, 40, 0, 295));
|
|
SB.addAdjustmentListener(this);
|
|
L.addFocusListener(this);
|
|
}
|
|
|
|
public void focusLost(final FocusEvent e) {
|
|
doAction("L");
|
|
}
|
|
|
|
public void focusGained(final FocusEvent e) {
|
|
doAction("L");
|
|
}
|
|
|
|
public void doAction(final String o) {
|
|
if ("L".equals(o)) {
|
|
Value = L.value(0, 255);
|
|
SB.setValue(Value);
|
|
CE.setcolor();
|
|
}
|
|
}
|
|
|
|
public void itemAction(final String o, final boolean flag) {
|
|
}
|
|
|
|
public void adjustmentValueChanged(final AdjustmentEvent e) {
|
|
Value = SB.getValue();
|
|
L.set(Value);
|
|
SB.setValue(Value);
|
|
CE.setcolor();
|
|
}
|
|
|
|
public int value() {
|
|
return L.value(0, 255);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* A dialog to edit a color. The result is stored in the Global parameters under
|
|
* the specified name string.
|
|
*
|
|
* @see rene.gui.Global
|
|
*/
|
|
|
|
public class ColorEditor extends CloseDialog {
|
|
/**
|
|
*
|
|
*/
|
|
private static final long serialVersionUID = 1L;
|
|
ColorScrollbar Red, Green, Blue;
|
|
Label RedLabel, GreenLabel, BlueLabel;
|
|
Color C;
|
|
JEricPanel CP;
|
|
String Name;
|
|
|
|
public ColorEditor(final Frame F, final String s, final Color c) {
|
|
super(F, Global.name("coloreditor.title"), true);
|
|
Name = s;
|
|
C = Global.getParameter(s, c);
|
|
if (C == null)
|
|
C = new Color(255, 255, 255);
|
|
final JEricPanel p = new MyPanel();
|
|
p.setLayout(new GridLayout(0, 1));
|
|
p.add(Red = new ColorScrollbar(this, Global.name("coloreditor.red"), C
|
|
.getRed()));
|
|
p.add(Green = new ColorScrollbar(this,
|
|
Global.name("coloreditor.green"), C.getGreen()));
|
|
p.add(Blue = new ColorScrollbar(this, Global.name("coloreditor.blue"),
|
|
C.getBlue()));
|
|
add("Center", new Panel3D(p));
|
|
final JEricPanel pb = new MyPanel();
|
|
pb.add(new ButtonAction(this, Global.name("OK"), "OK"));
|
|
pb.add(new ButtonAction(this, Global.name("abort"), "Close"));
|
|
add("South", new Panel3D(pb));
|
|
CP = new MyPanel();
|
|
CP.add(new MyLabel(Global.name("coloreditor.color")));
|
|
CP.setBackground(C);
|
|
add("North", new Panel3D(CP));
|
|
pack();
|
|
}
|
|
|
|
@Override
|
|
public void doAction(final String o) {
|
|
if ("Close".equals(o)) {
|
|
doclose();
|
|
} else if ("OK".equals(o)) {
|
|
setcolor();
|
|
Global.setParameter(Name, C);
|
|
doclose();
|
|
}
|
|
}
|
|
|
|
public void setcolor() {
|
|
C = new Color(Red.value(), Green.value(), Blue.value());
|
|
CP.setBackground(C);
|
|
CP.repaint();
|
|
}
|
|
}
|