/* * Copyright (c) 2010, Michael Grossmann * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the jo-widgets.org nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ package org.jowidgets.impl.widgets.basic.blueprint; import java.util.Collection; import java.util.List; import org.jowidgets.api.convert.IConverter; import org.jowidgets.api.convert.IObjectStringConverter; import org.jowidgets.api.model.levelmeter.ILevelMeterModel; import org.jowidgets.api.model.table.ITableColumnModel; import org.jowidgets.api.model.table.ITableModel; import org.jowidgets.api.model.tree.ITreeNodeModel; import org.jowidgets.api.toolkit.Toolkit; import org.jowidgets.api.widgets.blueprint.IActionMenuItemBluePrint; import org.jowidgets.api.widgets.blueprint.IButtonBluePrint; import org.jowidgets.api.widgets.blueprint.ICalendarBluePrint; import org.jowidgets.api.widgets.blueprint.ICanvasBluePrint; import org.jowidgets.api.widgets.blueprint.ICheckBoxBluePrint; import org.jowidgets.api.widgets.blueprint.ICheckedMenuItemBluePrint; import org.jowidgets.api.widgets.blueprint.IComboBoxBluePrint; import org.jowidgets.api.widgets.blueprint.IComboBoxSelectionBluePrint; import org.jowidgets.api.widgets.blueprint.ICompositeBluePrint; import org.jowidgets.api.widgets.blueprint.IDialogBluePrint; import org.jowidgets.api.widgets.blueprint.IDirectoryChooserBluePrint; import org.jowidgets.api.widgets.blueprint.IFileChooserBluePrint; import org.jowidgets.api.widgets.blueprint.IFrameBluePrint; import org.jowidgets.api.widgets.blueprint.IIconBluePrint; import org.jowidgets.api.widgets.blueprint.ILevelMeterBluePrint; import org.jowidgets.api.widgets.blueprint.IMainMenuBluePrint; import org.jowidgets.api.widgets.blueprint.IPopupDialogBluePrint; import org.jowidgets.api.widgets.blueprint.IRadioMenuItemBluePrint; import org.jowidgets.api.widgets.blueprint.IScrollCompositeBluePrint; import org.jowidgets.api.widgets.blueprint.ISeparatorBluePrint; import org.jowidgets.api.widgets.blueprint.ISeparatorMenuItemBluePrint; import org.jowidgets.api.widgets.blueprint.ISeparatorToolBarItemBluePrint; import org.jowidgets.api.widgets.blueprint.ISliderBluePrint; import org.jowidgets.api.widgets.blueprint.ISplitCompositeBluePrint; import org.jowidgets.api.widgets.blueprint.ISubMenuBluePrint; import org.jowidgets.api.widgets.blueprint.ITabFolderBluePrint; import org.jowidgets.api.widgets.blueprint.ITabItemBluePrint; import org.jowidgets.api.widgets.blueprint.ITableBluePrint; import org.jowidgets.api.widgets.blueprint.ITextAreaBluePrint; import org.jowidgets.api.widgets.blueprint.ITextFieldBluePrint; import org.jowidgets.api.widgets.blueprint.ITextLabelBluePrint; import org.jowidgets.api.widgets.blueprint.IToggleButtonBluePrint; import org.jowidgets.api.widgets.blueprint.IToolBarBluePrint; import org.jowidgets.api.widgets.blueprint.IToolBarButtonBluePrint; import org.jowidgets.api.widgets.blueprint.IToolBarContainerItemBluePrint; import org.jowidgets.api.widgets.blueprint.IToolBarMenuBluePrint; import org.jowidgets.api.widgets.blueprint.IToolBarPopupButtonBluePrint; import org.jowidgets.api.widgets.blueprint.IToolBarToggleButtonBluePrint; import org.jowidgets.api.widgets.blueprint.ITreeBluePrint; import org.jowidgets.api.widgets.blueprint.ITreeNodeBluePrint; import org.jowidgets.api.widgets.blueprint.ITreeViewerBluePrint; import org.jowidgets.api.widgets.blueprint.factory.IBluePrintFactory; import org.jowidgets.api.widgets.blueprint.factory.IBluePrintProxyFactory; import org.jowidgets.common.image.IImageConstant; import org.jowidgets.common.model.ITableDataModel; import org.jowidgets.common.types.FileChooserType; import org.jowidgets.common.types.Orientation; import org.jowidgets.impl.base.blueprint.factory.BaseBluePrintFactory; import org.jowidgets.impl.convert.DefaultObjectStringConverter; import org.jowidgets.unit.api.IUnit; import org.jowidgets.unit.api.IUnitSet; import org.jowidgets.util.Assert; import org.jowidgets.util.CollectionUtils; public abstract class AbstractBasicBluePrintFactory extends BaseBluePrintFactory implements IBluePrintFactory { public AbstractBasicBluePrintFactory(final IBluePrintProxyFactory bluePrintProxyFactor) { super(bluePrintProxyFactor); } @Override public final IFrameBluePrint frame() { return createProxy(IFrameBluePrint.class); } @Override public final IDialogBluePrint dialog() { return createProxy(IDialogBluePrint.class); } @Override public IPopupDialogBluePrint popupDialog() { return createProxy(IPopupDialogBluePrint.class); } @Override public IFileChooserBluePrint fileChooser(final FileChooserType type) { Assert.paramNotNull(type, "type"); final IFileChooserBluePrint result = createProxy(IFileChooserBluePrint.class); result.setType(type); return result; } @Override public IDirectoryChooserBluePrint directoryChooser() { return createProxy(IDirectoryChooserBluePrint.class); } @Override public final ICompositeBluePrint composite() { return createProxy(ICompositeBluePrint.class); } @Override public final IScrollCompositeBluePrint scrollComposite() { return createProxy(IScrollCompositeBluePrint.class); } @Override public ISplitCompositeBluePrint splitComposite() { return createProxy(ISplitCompositeBluePrint.class); } @Override public final ITextLabelBluePrint textLabel() { return createProxy(ITextLabelBluePrint.class); } @Override public final IIconBluePrint icon() { return createProxy(IIconBluePrint.class); } @Override public final ISeparatorBluePrint separator() { return createProxy(ISeparatorBluePrint.class); } @Override public final ITextFieldBluePrint textField() { return createProxy(ITextFieldBluePrint.class); } @Override public ITextAreaBluePrint textArea() { return createProxy(ITextAreaBluePrint.class); } @Override public final IButtonBluePrint button() { return createProxy(IButtonBluePrint.class); } @Override public final ICheckBoxBluePrint checkBox() { return createProxy(ICheckBoxBluePrint.class); } @Override public final IToggleButtonBluePrint toggleButton() { return createProxy(IToggleButtonBluePrint.class); } @Override public final <INPUT_TYPE> IComboBoxBluePrint<INPUT_TYPE> comboBox(final IConverter<INPUT_TYPE> converter) { final IComboBoxBluePrint<INPUT_TYPE> result = createProxy(IComboBoxBluePrint.class); return result.setObjectStringConverter(converter).setStringObjectConverter(converter); } @Override public final <INPUT_TYPE> IComboBoxSelectionBluePrint<INPUT_TYPE> comboBoxSelection( final IObjectStringConverter<INPUT_TYPE> objectStringConverter) { final IComboBoxSelectionBluePrint<INPUT_TYPE> result = createProxy(IComboBoxSelectionBluePrint.class); return result.setObjectStringConverter(objectStringConverter); } @Override public IActionMenuItemBluePrint menuItem() { return createProxy(IActionMenuItemBluePrint.class); } @Override public IRadioMenuItemBluePrint radioMenuItem() { return createProxy(IRadioMenuItemBluePrint.class); } @Override public ICheckedMenuItemBluePrint checkedMenuItem() { return createProxy(ICheckedMenuItemBluePrint.class); } @Override public ISubMenuBluePrint subMenu() { return createProxy(ISubMenuBluePrint.class); } @Override public IMainMenuBluePrint mainMenu() { return createProxy(IMainMenuBluePrint.class); } @Override public IToolBarBluePrint toolBar() { return createProxy(IToolBarBluePrint.class); } @Override public IToolBarButtonBluePrint toolBarButton() { return createProxy(IToolBarButtonBluePrint.class); } @Override public IToolBarToggleButtonBluePrint toolBarToggleButton() { return createProxy(IToolBarToggleButtonBluePrint.class); } @Override public IToolBarPopupButtonBluePrint toolBarPopupButton() { return createProxy(IToolBarPopupButtonBluePrint.class); } @Override public IToolBarMenuBluePrint toolBarMenu() { return createProxy(IToolBarMenuBluePrint.class); } @Override public IToolBarContainerItemBluePrint toolBarContainerItem() { return createProxy(IToolBarContainerItemBluePrint.class); } @Override public ISeparatorMenuItemBluePrint menuSeparator() { return createProxy(ISeparatorMenuItemBluePrint.class); } @Override public ISeparatorToolBarItemBluePrint toolBarSeparator() { return createProxy(ISeparatorToolBarItemBluePrint.class); } @Override public ITabFolderBluePrint tabFolder() { return createProxy(ITabFolderBluePrint.class); } @Override public ITabItemBluePrint tabItem() { return createProxy(ITabItemBluePrint.class); } @Override public ITreeBluePrint tree() { return createProxy(ITreeBluePrint.class); } @Override public <ROOT_NODE_VALUE_TYPE> ITreeViewerBluePrint<ROOT_NODE_VALUE_TYPE> treeViewer( final ITreeNodeModel<ROOT_NODE_VALUE_TYPE> model) { final ITreeViewerBluePrint<ROOT_NODE_VALUE_TYPE> result = createProxy(ITreeViewerBluePrint.class); result.setRootNodeModel(model); return result; } @Override public ITreeNodeBluePrint treeNode() { return createProxy(ITreeNodeBluePrint.class); } @Override public ITableBluePrint table(final ITableModel model) { Assert.paramNotNull(model, "model"); return table(model, model); } @Override public ITableBluePrint table(final ITableColumnModel columnModel, final ITableDataModel dataModel) { Assert.paramNotNull(columnModel, "columnModel"); Assert.paramNotNull(dataModel, "dataModel"); final ITableBluePrint result = createProxy(ITableBluePrint.class); result.setColumnModel(columnModel).setDataModel(dataModel); return result; } @Override public ICalendarBluePrint calendar() { return createProxy(ICalendarBluePrint.class); } @Override public ISliderBluePrint slider() { return createProxy(ISliderBluePrint.class); } @Override public ICanvasBluePrint canvas() { return createProxy(ICanvasBluePrint.class); } @Override public ILevelMeterBluePrint levelMeter(final ILevelMeterModel model) { final ILevelMeterBluePrint result = createProxy(ILevelMeterBluePrint.class); result.setModel(model); return result; } ///////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////some convenience methods starting here/////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// @Override public final IFrameBluePrint frame(final String title) { return frame().setTitle(title); } @Override public final IFrameBluePrint frame(final String title, final IImageConstant icon) { return frame(title).setIcon(icon); } @Override public final IDialogBluePrint dialog(final String title) { return dialog().setTitle(title); } @Override public final IDialogBluePrint dialog(final String title, final IImageConstant icon) { return dialog(title).setIcon(icon); } @Override public final ICompositeBluePrint compositeWithBorder() { return composite().setBorder(); } @Override public final ICompositeBluePrint composite(final String borderTitle) { return composite().setBorder(borderTitle); } @Override public ISplitCompositeBluePrint splitHorizontal() { return splitComposite().setOrientation(Orientation.HORIZONTAL); } @Override public ISplitCompositeBluePrint splitVertical() { return splitComposite().setOrientation(Orientation.VERTICAL); } @Override public final IButtonBluePrint button(final String text) { return button().setText(text); } @Override public final IButtonBluePrint button(final String text, final String toolTipText) { return button(text).setToolTipText(toolTipText); } @Override public IButtonBluePrint buttonOk() { return button(Messages.getString("BasicBluePrintFactory.ok")); } @Override public IButtonBluePrint buttonSave() { return button(Messages.getString("BasicBluePrintFactory.save")); } @Override public IButtonBluePrint buttonCancel() { return button(Messages.getString("BasicBluePrintFactory.cancel")); } @Override public IButtonBluePrint buttonClose() { return button(Messages.getString("BasicBluePrintFactory.close")); } @Override public IButtonBluePrint buttonDetails() { return button(Messages.getString("BasicBluePrintFactory.details")); } @Override public final IIconBluePrint icon(final IImageConstant icon) { return icon().setIcon(icon); } @Override public final ITextLabelBluePrint textLabel(final String text) { return textLabel().setText(text); } @Override public final ITextLabelBluePrint textLabel(final String text, final String tooltipText) { return textLabel(text).setToolTipText(tooltipText); } @Override public final IComboBoxBluePrint<String> comboBox() { return comboBox(Toolkit.getConverterProvider().string()); } @Override public final IComboBoxBluePrint<String> comboBox(final String... elements) { return comboBox().setElements(elements); } @Override public IComboBoxBluePrint<String> comboBox(final List<String> elements) { return comboBox().setElements(elements); } @Override public final IComboBoxSelectionBluePrint<String> comboBoxSelection() { return comboBoxSelection(Toolkit.getConverterProvider().string()); } @Override public final IComboBoxSelectionBluePrint<String> comboBoxSelection(final String... elements) { return comboBoxSelection().setElements(elements); } @Override public IComboBoxSelectionBluePrint<String> comboBoxSelection(final List<String> elements) { return comboBoxSelection().setElements(elements); } @Override public final <ENUM_TYPE extends Enum<?>> IComboBoxSelectionBluePrint<ENUM_TYPE> comboBoxSelection( final ENUM_TYPE... enumValues) { final IObjectStringConverter<ENUM_TYPE> converter = DefaultObjectStringConverter.getInstance(); return comboBoxSelection(converter).setElements(enumValues); } @Override public <VALUE_TYPE> IComboBoxSelectionBluePrint<VALUE_TYPE> comboBoxSelection(final Collection<VALUE_TYPE> elements) { final IObjectStringConverter<VALUE_TYPE> converter = DefaultObjectStringConverter.getInstance(); return comboBoxSelection(converter).setElements(elements); } @Override public IComboBoxSelectionBluePrint<IUnit> comboBoxSelection(final IUnitSet unitSet) { final IObjectStringConverter<IUnit> converter = Toolkit.getConverterProvider().unitConverter(); return comboBoxSelection(converter).setElements(CollectionUtils.toCollection(unitSet)); } @Override public IComboBoxBluePrint<String> comboBoxString() { return comboBox(Toolkit.getConverterProvider().string()); } @Override public IComboBoxBluePrint<Long> comboBoxLongNumber() { return comboBox(Toolkit.getConverterProvider().longNumber()); } @Override public IComboBoxBluePrint<Integer> comboBoxIntegerNumber() { return comboBox(Toolkit.getConverterProvider().integerNumber()); } @Override public IComboBoxBluePrint<Short> comboBoxShortNumber() { return comboBox(Toolkit.getConverterProvider().shortNumber()); } @Override public IComboBoxSelectionBluePrint<String> comboBoxSelectionString() { return comboBoxSelection(Toolkit.getConverterProvider().string()); } @Override public IComboBoxSelectionBluePrint<Long> comboBoxSelectionLongNumber() { return comboBoxSelection(Toolkit.getConverterProvider().longNumber()); } @Override public IComboBoxSelectionBluePrint<Integer> comboBoxSelectionIntegerNumber() { return comboBoxSelection(Toolkit.getConverterProvider().integerNumber()); } @Override public IComboBoxSelectionBluePrint<Short> comboBoxSelectionShortNumber() { return comboBoxSelection(Toolkit.getConverterProvider().shortNumber()); } @Override public IComboBoxSelectionBluePrint<Boolean> comboBoxSelectionBoolean() { final IComboBoxSelectionBluePrint<Boolean> result = comboBoxSelection(Toolkit.getConverterProvider().boolLong()); result.setElements(Boolean.TRUE, Boolean.FALSE); return result; } @Override public final IScrollCompositeBluePrint scrollCompositeWithBorder() { return scrollComposite().setBorder(); } @Override public final IScrollCompositeBluePrint scrollComposite(final String borderTitle) { return scrollComposite().setBorder(borderTitle); } @Override public IActionMenuItemBluePrint menuItem(final String text) { return menuItem().setText(text); } @Override public IRadioMenuItemBluePrint radioMenuItem(final String text) { return radioMenuItem().setText(text); } @Override public ICheckedMenuItemBluePrint checkedMenuItem(final String text) { return checkedMenuItem().setText(text); } @Override public ISubMenuBluePrint subMenu(final String text) { return subMenu().setText(text); } @Override public IMainMenuBluePrint mainMenu(final String text) { return mainMenu().setText(text); } }