at.spardat.xma.mdl.list.ListDomWMClient Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2003, 2007 s IT Solutions AT Spardat GmbH .
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* s IT Solutions AT Spardat GmbH - initial API and implementation
*******************************************************************************/
// @(#) $Id: ListDomWMClient.java 7142 2011-01-27 15:17:25Z hoenninger $
package at.spardat.xma.mdl.list;
import at.spardat.xma.mdl.ModelChangeEvent;
import at.spardat.xma.mdl.NewModelEvent;
import at.spardat.xma.mdl.Notification;
import at.spardat.xma.mdl.UIDelegateClient;
import at.spardat.xma.mdl.UIDelegateFactoryClient;
import at.spardat.xma.mdl.WModel;
import at.spardat.xma.page.Page;
import at.spardat.xma.page.PageClient;
/**
* Implementation of IListDomWMClient.
*
* @author YSD, 20.04.2003 19:15:19
*/
public class ListDomWMClient extends ListDomWM implements IListDomWMClient {
/**
* The Page this WidgetModel belongs to. Never null.
*/
private PageClient pageModel_;
/**
* The associated UI delegate. Never null.
*/
private ListDomUIDelegateClient ui_;
/**
* One of the SHOW_-constants.
*/
private int showStyle_ = SHOW_LONG;
/**
* One of the ORDER_-constants.
*/
private int orderStyle_ = ORDER_LONG;
/**
* Indicates that a value must be provided on a UI
*/
private boolean mandatory_;
/**
* Indicates that long values of the selected entry should be shown as tooltip.
*/
private boolean isShowLongValueAsTooltips_ = false;
/**
* Constructs with a provided data source.
*
* @param id a numeric id which identifies the WidgetModel within its Page.
* @param pm reference to the enclosing Page
* @param dataSource specifies a tabular data source
* @param style one of the SHOW_-constants or MANDATORY defined in {@link IListDomWMClient}.
* @exception IllegalArgumentException if dataSource is null or empty.
*/
public ListDomWMClient (short id, Page pm, String dataSource, int style) {
super (id, pm, dataSource);
pageModel_ = (PageClient) pm;
ui_ = (ListDomUIDelegateClient) UIDelegateFactoryClient.getInstance((PageClient)pm).newUIDelegateFor(this);
setShowStyle (style);
if ((style & MANDATORY) != 0) mandatory_ = true;
}
/**
* Sets the style that drives what is shown in the combo box. This method also
* determines the sort order. SHOW_LONG implies ORDER_LONG and
* SHOW_SHORT_LONG implies ORDER_SHORT.
*
* This set method may only be called after construction. Calling it later won't
* effect the visual appearance of the combo.
*
* @param showStyle must be either SHOW_LONG or SHOW_SHORT_LONG. If non of these
* style is set, this method does nothing.
*/
public void setShowStyle (int showStyle) {
if ((showStyle & SHOW_LONG) != 0) { showStyle_ = SHOW_LONG; setOrderStyle (ORDER_LONG);}
else if ((showStyle & SHOW_SHORT_LONG) != 0) { showStyle_ = SHOW_SHORT_LONG; setOrderStyle(ORDER_SHORT); }
else if ((showStyle & SHOW_SHORT) != 0) { showStyle_ = SHOW_SHORT; setOrderStyle(ORDER_SHORT); }
}
/**
* Sets the style that determines the sort order.
*
* This method may only be called after construction. Calling it later won't
* affect the visual appearance of the combo.
*
* @param orderStyle may be ORDER_LONG, ORDER_SHORT or
* ORDER_NATURAL.
*/
public void setOrderStyle (int orderStyle) {
if ((orderStyle & ORDER_LONG) != 0) orderStyle_ = ORDER_LONG;
else if ((orderStyle & ORDER_NATURAL) != 0) orderStyle_ = ORDER_NATURAL;
else if ((orderStyle & ORDER_SHORT) !=0 ) orderStyle_ = ORDER_SHORT;
else throw new IllegalArgumentException();
}
/**
* @see at.spardat.xma.mdl.list.IListDomWMClient#getOrderStyle()
*/
public int getOrderStyle() {
return orderStyle_;
}
/**
* @see at.spardat.xma.mdl.list.IListDomWMClient#getShowStyle()
*/
public int getShowStyle() {
return showStyle_;
}
/**
* @see at.spardat.xma.mdl.list.IListDomWMClient#isMandatory()
*/
public boolean isMandatory() {
return mandatory_;
}
/**
* @see at.spardat.xma.mdl.list.IListDomWMClient#setMandatory(boolean)
*/
public void setMandatory (boolean what) {
boolean oldVal = mandatory_;
mandatory_ = what;
if (oldVal != what) handle (new MandatoryChangedEvent());
}
/**
* @see at.spardat.xma.mdl.IWModelClient#getUIDelegate()
*/
public UIDelegateClient getUIDelegate() {
return ui_;
}
/**
* @see at.spardat.xma.mdl.WModel#handle(at.spardat.xma.mdl.ModelChangeEvent)
*/
public boolean handle (ModelChangeEvent event) {
boolean success = super.handle(event);
// notify the UI-delegate
if (!event.isFromUI()) {
ui_.handleModelChangeEvent(event);
}
return success;
}
/**
* Returns the PageClient this WidgetModelC belongs to.
*
* @return PageClient, never null.
*/
public PageClient getPageModelC () {
return pageModel_;
}
/**
* @see at.spardat.xma.mdl.IWModelClient#isEditable()
*/
public boolean isEditable() {
return ui_.isEditable();
}
/**
* @see at.spardat.xma.mdl.IWModelClient#isEnabled()
*/
public boolean isEnabled() {
return ui_.isEnabled();
}
/**
* @see at.spardat.xma.mdl.IWModelClient#setEditable(boolean)
*/
public void setEditable(boolean what) {
ui_.setEditable(what);
}
/**
* @see at.spardat.xma.mdl.IWModelClient#setEnabled(boolean)
*/
public void setEnabled(boolean what) {
ui_.setEnabled(what);
}
/**
* Indicates that the formatter has been changed programmatically
*/
class MandatoryChangedEvent extends Notification {
public MandatoryChangedEvent () {
super (ListDomWMClient.this, false);
}
}
/**
* Returns if the selected long value should be shown as tooltip.
*/
public boolean isShowLongValueAsTooltips_() {
return isShowLongValueAsTooltips_;
}
/**
* @see at.spardat.xma.mdl.list.IListDomWMClient#setShowLongValueToolTips()
*/
public void setShowLongValueToolTips () {
isShowLongValueAsTooltips_ = true;
}
/**
* Event class used to notify the dynamic registration of a new ListDomWMClient.
* @author gub
* @since 2.1.0
* @see Page#addWModel(WModel)
*/
public static class NewListDomWMClientEvent extends NewListDomWMEvent {
/** empty contructor for deserialization */
public NewListDomWMClientEvent() {}
/**
* constructor which initializes dataSource and style
* @param dataSource specifies a tabular data source
* @param style one of the SHOW_-constants or MANDATORY defined in {@link IListDomWMClient}.
*/
public NewListDomWMClientEvent(String dataSource, int style) {
super(dataSource,style);
}
// see at.spardat.xma.mdl.NewModelEvent.createModel()
public WModel createModel(short id, Page page) {
return new ListDomWMClient(id,page,dataSource,style);
}
}
// see at.sparda.xma.mdl.WModel.createNewModelEvent()
public NewModelEvent createNewModelEvent() {
return new NewListDomWMClientEvent(getDataSource(),showStyle_);
}
}