package org.javabuilders.gtk; import static org.javabuilders.gtk.GtkConstants.*; import java.beans.PropertyChangeSupport; import java.util.Calendar; import org.freedesktop.bindings.Constant; import org.gnome.gtk.AccelLabel; import org.gnome.gtk.Action; import org.gnome.gtk.Alignment; import org.gnome.gtk.Arrow; import org.gnome.gtk.AspectFrame; import org.gnome.gtk.Assistant; import org.gnome.gtk.Box; import org.gnome.gtk.Button; import org.gnome.gtk.ButtonBox; import org.gnome.gtk.CellView; import org.gnome.gtk.CheckButton; import org.gnome.gtk.CheckMenuItem; import org.gnome.gtk.ColorButton; import org.gnome.gtk.ColorSelection; import org.gnome.gtk.ComboBox; import org.gnome.gtk.ComboBoxEntry; import org.gnome.gtk.Container; import org.gnome.gtk.Dialog; import org.gnome.gtk.DrawingArea; import org.gnome.gtk.Entry; import org.gnome.gtk.EventBox; import org.gnome.gtk.Expander; import org.gnome.gtk.FileChooserAction; import org.gnome.gtk.FileChooserButton; import org.gnome.gtk.FileChooserWidget; import org.gnome.gtk.Fixed; import org.gnome.gtk.FontButton; import org.gnome.gtk.FontSelection; import org.gnome.gtk.Frame; import org.gnome.gtk.HBox; import org.gnome.gtk.HButtonBox; import org.gnome.gtk.HPaned; import org.gnome.gtk.HRuler; import org.gnome.gtk.HScale; import org.gnome.gtk.HScrollbar; import org.gnome.gtk.HSeparator; import org.gnome.gtk.HandleBox; import org.gnome.gtk.IconView; import org.gnome.gtk.Image; import org.gnome.gtk.ImageMenuItem; import org.gnome.gtk.Label; import org.gnome.gtk.Layout; import org.gnome.gtk.LinkButton; import org.gnome.gtk.Menu; import org.gnome.gtk.MenuBar; import org.gnome.gtk.MenuItem; import org.gnome.gtk.MenuShell; import org.gnome.gtk.MenuToolButton; import org.gnome.gtk.Notebook; import org.gnome.gtk.Paned; import org.gnome.gtk.Plug; import org.gnome.gtk.ProgressBar; import org.gnome.gtk.RadioButton; import org.gnome.gtk.RadioMenuItem; import org.gnome.gtk.RecentChooserMenu; import org.gnome.gtk.RecentChooserWidget; import org.gnome.gtk.Ruler; import org.gnome.gtk.Scale; import org.gnome.gtk.ScaleButton; import org.gnome.gtk.ScrolledWindow; import org.gnome.gtk.SeparatorMenuItem; import org.gnome.gtk.SeparatorToolItem; import org.gnome.gtk.Socket; import org.gnome.gtk.SpinButton; import org.gnome.gtk.Statusbar; import org.gnome.gtk.Table; import org.gnome.gtk.TearoffMenuItem; import org.gnome.gtk.TextComboBox; import org.gnome.gtk.TextComboBoxEntry; import org.gnome.gtk.TextView; import org.gnome.gtk.ToggleButton; import org.gnome.gtk.ToggleToolButton; import org.gnome.gtk.ToolButton; import org.gnome.gtk.ToolItem; import org.gnome.gtk.Toolbar; import org.gnome.gtk.TreeView; import org.gnome.gtk.TreeViewColumn; import org.gnome.gtk.VBox; import org.gnome.gtk.VButtonBox; import org.gnome.gtk.VPaned; import org.gnome.gtk.VRuler; import org.gnome.gtk.VScale; import org.gnome.gtk.VScrollbar; import org.gnome.gtk.VSeparator; import org.gnome.gtk.Viewport; import org.gnome.gtk.Widget; import org.gnome.gtk.Window; import org.javabuilders.BuilderConfig; import org.javabuilders.ICustomCommand; import org.javabuilders.event.IBackgroundProcessingHandler; import org.javabuilders.gtk.handler.property.ScaleDrawValueHandler; import org.javabuilders.gtk.handler.type.ConstantAsValueHandler; import org.javabuilders.gtk.handler.type.ContainerFinishProcessor; import org.javabuilders.gtk.handler.type.FileChooserActionAsValue; import org.javabuilders.gtk.handler.type.FileChooserButtonTypeHandler; import org.javabuilders.gtk.handler.type.HBoxTypeHandler; import org.javabuilders.gtk.handler.type.HScaleTypeHandler; import org.javabuilders.gtk.handler.type.LabelHandler; import org.javabuilders.gtk.handler.type.MenuItemTypeHandler; import org.javabuilders.gtk.handler.type.MenuShellFinishProcessor; import org.javabuilders.gtk.handler.type.NotebookFinishProcessor; import org.javabuilders.gtk.handler.type.PanedFinishProcessor; import org.javabuilders.gtk.handler.type.ScrolledWindowFinishProcessor; import org.javabuilders.gtk.handler.type.TableTypeHandler; import org.javabuilders.gtk.handler.type.TreeViewColumnTypeHandler; import org.javabuilders.gtk.handler.type.VBoxTypeHandler; import org.javabuilders.handler.ITypeHandler; import org.javabuilders.handler.validation.IValidationMessageHandler; import org.javabuilders.layout.DefaultResize; /** * GTK+ config * @author Jacek Furmankiewicz */ public class GtkJavaBuilderConfig extends BuilderConfig{ public GtkJavaBuilderConfig( IBackgroundProcessingHandler backgroundProcessingHandler, ITypeHandler bindingTypeHandler, IValidationMessageHandler validationMessageHandler, ICustomCommand<Boolean> confirmCommand) { super(null, null, null); //widgets addType( Action.class, AccelLabel.class, Alignment.class, Arrow.class, AspectFrame.class, Assistant.class, Box.class, Button.class, ButtonBox.class, Calendar.class, CellView.class, CheckButton.class, CheckMenuItem.class, ColorButton.class, ColorSelection.class, ComboBox.class, ComboBoxEntry.class, Dialog.class, DrawingArea.class, Entry.class, EventBox.class, Expander.class, FileChooserButton.class, FileChooserWidget.class, Fixed.class, FontButton.class, FontSelection.class, Frame.class, HandleBox.class, HBox.class, HButtonBox.class, HPaned.class, HRuler.class, HScale.class, HScrollbar.class, HSeparator.class, IconView.class, Image.class, ImageMenuItem.class, Label.class, Layout.class, LinkButton.class, Menu.class, MenuBar.class, MenuItem.class, MenuToolButton.class, Notebook.class, Plug.class, ProgressBar.class, RadioButton.class, RadioMenuItem.class, RecentChooserMenu.class, RecentChooserWidget.class, Ruler.class, ScaleButton.class, ScrolledWindow.class, SeparatorMenuItem.class, SeparatorToolItem.class, Socket.class, SpinButton.class, Statusbar.class, Table.class, TearoffMenuItem.class, TextComboBox.class, TextComboBoxEntry.class, TextView.class, ToggleButton.class, ToggleToolButton.class, Toolbar.class, ToolButton.class, ToolItem.class, TreeView.class, TreeViewColumn.class, VBox.class, VButtonBox.class, Viewport.class, VPaned.class, VRuler.class, VScale.class, VScrollbar.class, VSeparator.class, Window.class); //type customizations forType(Button.class).defaultResize(DefaultResize.NONE); forType(Container.class) .finishProcessor(new ContainerFinishProcessor()) .children(Widget.class,0,Integer.MAX_VALUE); forType(Constant.class).valueHandler(new ConstantAsValueHandler()); forType(Entry.class).defaultResize(DefaultResize.X_AXIS); forType(FileChooserAction.class) .valueHandler(new FileChooserActionAsValue()); forType(FileChooserButton.class) .typeHandler(new FileChooserButtonTypeHandler()); forType(HBox.class).typeHandler(new HBoxTypeHandler()); forType(HScale.class).typeHandler(new HScaleTypeHandler()); forType(Label.class).typeHandler(new LabelHandler()); forType(Menu.class) .children(MenuItem.class,0,Integer.MAX_VALUE); forType(MenuBar.class) .children(MenuItem.class, 0, Integer.MAX_VALUE); forType(MenuItem.class) .typeHandler(new MenuItemTypeHandler()) .children(Menu.class,0,Integer.MAX_VALUE); forType(MenuShell.class).finishProcessor(new MenuShellFinishProcessor()); forType(Notebook.class).defaultResize(DefaultResize.BOTH).finishProcessor(new NotebookFinishProcessor()); forType(Paned.class).defaultResize(DefaultResize.BOTH).finishProcessor(new PanedFinishProcessor()); forType(Scale.class) .defaultValue("min", 1).defaultValue("max",100).defaultValue("step", 1) .propertyHandler(new ScaleDrawValueHandler()); forType(ScrolledWindow.class).finishProcessor(new ScrolledWindowFinishProcessor()); forType(Table.class).typeHandler(new TableTypeHandler()); forType(TextView.class).defaultResize(DefaultResize.BOTH); forType(TreeView.class) .defaultResize(DefaultResize.BOTH) .childrenOverride(true) .children(TreeViewColumn.class, 0, Integer.MAX_VALUE); forType(TreeViewColumn.class) .typeHandler(new TreeViewColumnTypeHandler()); forType(VBox.class).typeHandler(new VBoxTypeHandler()); forType(Widget.class) .localize(LABEL, NotebookFinishProcessor.TAB_LABEL) .ignore(NotebookFinishProcessor.IS_TAB_LABEL,NotebookFinishProcessor.TAB_LABEL); forType(Window.class) .localize("title"); } /* (non-Javadoc) * @see org.javabuilders.BuilderConfig#createPropertyChangeSupport(java.lang.Object) */ @Override public PropertyChangeSupport createPropertyChangeSupport(Object source) { return new PropertyChangeSupport(source); } }