
com.l2fprod.common.demo.PropertySheetPage3 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of l2fprod-properties-editor Show documentation
Show all versions of l2fprod-properties-editor Show documentation
Provides a Swing component for editing properties in a table.
/*
* Copyright 2015 Matthew Aguirre
*
* 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 com.l2fprod.common.demo;
import com.l2fprod.common.propertysheet.DefaultProperty;
import com.l2fprod.common.propertysheet.Property;
import com.l2fprod.common.propertysheet.PropertySheet;
import com.l2fprod.common.propertysheet.PropertySheetPanel;
import com.l2fprod.common.swing.LookAndFeelTweaks;
import com.l2fprod.common.util.ResourceManager;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class PropertySheetPage3 extends JPanel {
private static final Class> THIS_CLASS = PropertySheetPage3.class;
static ResourceManager RESOURCE = ResourceManager.get(THIS_CLASS);
@SuppressWarnings("OverridableMethodCallInConstructor")
public PropertySheetPage3() {
setLayout(LookAndFeelTweaks.createVerticalPercentLayout());
JTextArea message = new JTextArea();
message.setText(PropertySheetMain.RESOURCE.getString("Main.sheet1.message"));
LookAndFeelTweaks.makeMultilineLabel(message);
add(message);
final Colorful data = new Colorful();
data.setColor(new Color(255, 153, 102));
DefaultProperty level0 = new NoReadWriteProperty();
level0.setDisplayName("Level 0");
level0.setCategory("A category");
DefaultProperty level1 = new NoReadWriteProperty();
level1.setDisplayName("Level 1");
level1.setCategory("Another category");
level0.addSubProperty(level1);
DefaultProperty level2 = new NoReadWriteProperty();
level2.setDisplayName("Level 2");
level1.addSubProperty(level2);
DefaultProperty level21 = new NoReadWriteProperty();
level21.setDisplayName("Level 3");
level1.addSubProperty(level21);
DefaultProperty level211 = new NoReadWriteProperty();
level211.setDisplayName("Level 3.1");
level21.addSubProperty(level211);
DefaultProperty root = new NoReadWriteProperty();
root.setDisplayName("Root");
final PropertySheetPanel sheet = new PropertySheetPanel();
sheet.setMode(PropertySheet.VIEW_AS_FLAT_LIST);
sheet.setProperties(new Property[]{new ColorProperty(), level0, root});
sheet.readFromObject(data);
sheet.setDescriptionVisible(true);
sheet.setSortingCategories(true);
sheet.setSortingProperties(true);
add(sheet, "*");
// everytime a property change, update the button with it
PropertyChangeListener listener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
Property prop = (Property) evt.getSource();
prop.writeToObject(data);
System.out.println("Updated object to " + data);
}
};
sheet.addPropertySheetChangeListener(listener);
JButton button = new JButton(new AbstractAction("Click to setWantsExtraIndent(true)") {
@Override
public void actionPerformed(ActionEvent e) {
sheet.getTable().setWantsExtraIndent(!sheet.getTable().getWantsExtraIndent());
putValue(NAME, "Click to setWantsExtraIndent(" + !sheet.getTable().getWantsExtraIndent() + ")");
}
});
add(button);
}
static class NoReadWriteProperty extends DefaultProperty {
@Override
public void readFromObject(Object object) {
}
@Override
public void writeToObject(Object object) {
}
}
public static class Colorful {
private Color color;
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public int getRed() {
return color.getRed();
}
public void setRed(int red) {
color = new Color(red, getGreen(), getBlue());
}
public int getGreen() {
return color.getGreen();
}
public void setGreen(int green) {
color = new Color(getRed(), green, getBlue());
}
public int getBlue() {
return color.getBlue();
}
public void setBlue(int blue) {
color = new Color(getRed(), getGreen(), blue);
}
@Override
public String toString() {
return color.toString();
}
}
public static class ColorProperty extends DefaultProperty {
@SuppressWarnings("OverridableMethodCallInConstructor")
public ColorProperty() {
setName("color");
setCategory(RESOURCE.getString("color.cat"));
setDisplayName(RESOURCE.getString("color.name"));
setShortDescription(RESOURCE.getString("color.desc"));
setType(Color.class);
addSubProperty(new ColorComponentProperty("red"));
addSubProperty(new ColorComponentProperty("green"));
addSubProperty(new ColorComponentProperty("blue"));
}
}
public static class ColorComponentProperty extends DefaultProperty {
@SuppressWarnings("OverridableMethodCallInConstructor")
public ColorComponentProperty(String name) {
setName(name);
setDisplayName(RESOURCE.getString(name + ".name"));
setShortDescription(RESOURCE.getString(name + ".desc"));
setType(int.class);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy