📄 graphcolorseditor.java
字号:
/** * Copyright 2004 Carlos Silva A. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package jgantt.view.dialogs;import java.awt.AWTEvent;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.lang.reflect.Field;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JColorChooser;import javax.swing.JComponent;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTabbedPane;import javax.swing.JTextField;import jgantt.model.GraphColors;import jgantt.model.TaskColors;import jgantt.model.TaskTreeOptions;import jgantt.view.adapters.ProjectViewModel;import com.csa.lib.swing.FontField;/** * ProjectEditor, edita las caracteristicas de un proyecto: * <ul> * <li> fechad de inicio * </ul> * <p> * $Date: 2005/07/18 07:25:10 $ * </p> * * @version $Revision: 1.6 $ * @author {user} */public class GraphColorsEditor extends JTabbedPane { private static final long serialVersionUID = 3257846601719559735L; ProjectViewModel pvModel; static Color parseColor(String s) { return new Color(Integer.parseInt(s, 16)); } static String formatColor(Color c) { return Integer.toHexString(c.getRGB() & 0x00ffffff); } class ColorTextField extends JTextField implements ActionListener { private static final long serialVersionUID = 3258410629760104757L; String fieldName; Object object; Field field = null; ColorTextField(Object o, String n) { object = o; fieldName = n; try { field = object.getClass().getDeclaredField(fieldName); Color color = (Color) field.get(object); setText(formatColor(color)); } catch (Exception e) { System.out.println("getcolor:" + e.getMessage()); } addActionListener(this); } /** * cambios en los controles. */ public void actionPerformed(ActionEvent event) { assign(); } public void assign() { try { Color color = parseColor(getText()); field.set(object, color); pvModel.getViewOptions().notifyObservers(); } catch (Exception e) { System.out.println("setcolor:" + e.getMessage()); } } } class ColorButton extends JButton implements ActionListener { private static final long serialVersionUID = 3257566209124808759L; ColorTextField textField; ColorButton(ColorTextField tf) { textField = tf; setText("..."); enableEvents(AWTEvent.ACTION_EVENT_MASK); addActionListener(this); } public void actionPerformed(ActionEvent event) { Color c = JColorChooser.showDialog(this, textField.fieldName, parseColor(textField.getText())); if (c == null) return; textField.setText(formatColor(c)); textField.assign(); } } class BoolCheckBox extends JCheckBox implements ActionListener { private static final long serialVersionUID = 3257564001411020341L; String fieldName; Object object; Field field = null; BoolCheckBox(Object o, String l) { super(l); fieldName = l; object = o; try { field = GraphColors.class.getDeclaredField(fieldName); boolean b = field.getBoolean(object); setSelected(b); } catch (Exception e) { System.out.println("getboolean:" + e.getMessage()); } addActionListener(this); } /** * cambios en los controles. */ public void actionPerformed(ActionEvent event) { assign(); } public void assign() { try { field.setBoolean(object, isSelected()); // refrescar... pvModel.getViewOptions().notifyObservers(); } catch (Exception e) { System.out.println("setboolean:" + e.getMessage()); } } } class AutoFontField extends FontField implements ActionListener { private static final long serialVersionUID = 3258410629760104757L; String fieldName; Object object; Field field = null; AutoFontField(Object o, String n) { super(null); object = o; fieldName = n; try { field = object.getClass().getDeclaredField(fieldName); Font font = (Font) field.get(object); setFont(font); } catch (Exception e) { e.printStackTrace(); } addActionListener(this); } /** * cambios en los controles. */ public void actionPerformed(ActionEvent event) { assign(); } public void assign() { try { field.set(object, getFont()); pvModel.getViewOptions().notifyObservers(); } catch (Exception e) { System.out.println("setFont:" + e.getMessage()); } } } protected void addColor(JPanel p, GridBagConstraints c, Object o, String l) { addColor(p, c, o, l, l); } protected void addColor(JPanel p, GridBagConstraints c, Object o, String l, String fieldLabel) { JLabel label = new JLabel(fieldLabel, JLabel.LEFT); c.weightx = 1.0; c.gridwidth = 1; GridBagLayout gridbag = (GridBagLayout) p.getLayout(); gridbag.setConstraints(label, c); p.add(label); ColorTextField field = new ColorTextField(o, l); c.gridwidth = 1; gridbag.setConstraints(field, c); p.add(field); ColorButton btn = new ColorButton(field); c.weightx = 0.2; c.gridwidth = GridBagConstraints.REMAINDER; // end row gridbag.setConstraints(btn, c); p.add(btn); } protected void addFont(JPanel p, GridBagConstraints c, Object obj, String fieldName, String fieldLabel) { JLabel label = new JLabel(fieldLabel, JLabel.LEFT); c.weightx = 1.0; c.gridwidth = 1; GridBagLayout gridbag = (GridBagLayout) p.getLayout(); gridbag.setConstraints(label, c); p.add(label); JComponent field = new AutoFontField(obj, fieldName); c.gridwidth = GridBagConstraints.REMAINDER; // end row gridbag.setConstraints(field, c); p.add(field); } protected void addCheck(JPanel p, GridBagConstraints c, Object o, String fieldName) { c.weightx = 1.0; c.gridwidth = 1; GridBagLayout gridbag = (GridBagLayout) p.getLayout(); BoolCheckBox field = new BoolCheckBox(o, fieldName); c.gridwidth = GridBagConstraints.REMAINDER; // end row gridbag.setConstraints(field, c); p.add(field); } protected void addLabel(JPanel p, GridBagConstraints c, String l) { c.weightx = 1.0; c.gridwidth = 1; GridBagLayout gridbag = (GridBagLayout) p.getLayout(); JLabel field = new JLabel(l); field.setBorder(BorderFactory.createEtchedBorder(Color.lightGray, Color.gray)); c.gridwidth = GridBagConstraints.REMAINDER; // end row gridbag.setConstraints(field, c); p.add(field); } /** * Constructor for TaskEditor */ public GraphColorsEditor(ProjectViewModel pvModel) { super(); this.pvModel = pvModel; JPanel p1 = new JPanel(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; p1.setLayout(gridbag); GraphColors gc = pvModel.getProject().getGraphColors(); addColor(p1, c, gc, "text", "Header Text"); addColor(p1, c, gc, "titleFg", "Header lines"); addColor(p1, c, gc, "titleBg", "Header background"); // addColor(p1, c, gc, "graph"); addColor(p1, c, gc, "background", "Gantt background"); addColor(p1, c, gc, "weekEnd", "Weekends"); addColor(p1, c, gc, "holiday", "Holidays"); addColor(p1, c, gc, "now", "Today"); JPanel p3 = new JPanel(); gridbag = new GridBagLayout(); c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; p3.setLayout(gridbag); addLabel(p3, c, "Vertical lines"); addCheck(p3, c, gc, "drawMinorLines"); addColor(p3, c, gc, "div", "Minor lines"); addColor(p3, c, gc, "mayorDiv", "Major lines"); addLabel(p3, c, "Horizontal Lines"); addCheck(p3, c, gc, "drawTaskLines"); addColor(p3, c, gc, "horLine", "Task lines"); JPanel p2 = new JPanel(); gridbag = new GridBagLayout(); c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; p2.setLayout(gridbag); TaskColors tc = gc.defaultTaskColors; //addLabel(p2, c, "Task"); addColor(p2, c, tc, "barBg", "Bar background"); addColor(p2, c, tc, "barLine", "Bar line"); addColor(p2, c, tc, "barCompleted", "Bar completed"); addColor(p2, c, tc, "constraint", "Constraint line"); addColor(p2, c, tc, "text", "Text"); addColor(p2, c, gc, "snapshot", "Snapshot shadow"); TaskTreeOptions tt = pvModel.getProject().getTreeColors(); addFont(p2, c, tt, "cellFont", "Font"); JPanel p4 = new JPanel(); gridbag = new GridBagLayout(); c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; p4.setLayout(gridbag); tc = gc.defaultResumeColors; //addLabel(p4, c, "Resume Task"); addColor(p4, c, tc, "barBg", "Bar background"); addColor(p4, c, tc, "barLine", "Bar line"); addColor(p4, c, tc, "barCompleted", "Bar completed"); addColor(p4, c, tc, "constraint", "Constraint line"); addColor(p4, c, tc, "text", "Text"); addColor(p4, c, gc, "snapshot", "Snapshot shadow"); addFont(p4, c, tt, "cellResumeFont", "Font"); addTab("General", null, p1, "Headers and holidays"); addTab("Grid", null, p3, "Lines & colors"); addTab("Tasks", null, p2, "Colors for tasks"); addTab("Resumes", null, p4, "Colors for resume tasks"); setPreferredSize(new Dimension(300, 230)); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -