diff -r c521df56b15d -r c01f5ab28a11 org.symbian.tools.wrttools/projecttemplates/WRTKit/UI/Control.js --- a/org.symbian.tools.wrttools/projecttemplates/WRTKit/UI/Control.js Thu Apr 15 16:00:54 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,207 +0,0 @@ -/** - * Copyright (c) 2009-2010 Symbian Foundation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of the License "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: - * - */ - -/////////////////////////////////////////////////////////////////////////////// -// The Control class is an abstract base class for all user interface controls. - -// Constructor. -function Control(id, caption) { - if (id != UI_NO_INIT_ID) { - this.init(id, caption); - } -} - -// Control inherits from UIElement. -Control.prototype = new UIElement(UI_NO_INIT_ID); - -// The view that control belongs to. -Control.prototype.view = null; - -// Is the control focused? -Control.prototype.focused = false; - -// Is the pointer over this control? -Control.prototype.hovering = false; - -// The element hierarchy in a control is as follows: -// -// rootElement -// assemblyElement -// captionElement -// controlElement -// -// The assembly element groups the portion of a control that typically handle -// the visual effects for focus and hover states. Having a separate root and -// assembly elements allows other elements to be added to a control without -// them being affected by the CSS rules of the assembly element. - -// The assembly element of this control. -Control.prototype.assemblyElement = null; - -// The caption of this control; null if none. -Control.prototype.caption = null; - -// The caption element of this control. -Control.prototype.captionElement = null; - -// The control element of this control. -Control.prototype.controlElement = null; - -// Initializer - called from constructor. -Control.prototype.init = function(id, caption) { - uiLogger.debug("Control.init(" + id + ", " + caption + ")"); - - // call superclass initializer - UIElement.prototype.init.call(this, id); - - // create assembly, caption and control elements - this.assemblyElement = document.createElement("div"); - this.captionElement = document.createElement("div"); - this.assemblyElement.appendChild(this.captionElement); - this.controlElement = document.createElement("div"); - this.assemblyElement.appendChild(this.controlElement); - this.rootElement.appendChild(this.assemblyElement); - - // set the caption - // style is not updated because the subclass will update the style later - // when it has completely initialized the component - this.setCaption(caption, true); -}; - -// Returns the caption; null if none. -Control.prototype.getCaption = function() { - return this.caption; -}; - -// Sets the caption; null if none. -Control.prototype.setCaption = function(caption, noStyleUpdate) { - uiLogger.debug("Control.setCaption(" + caption + ")"); - - // set the display style - this.captionElement.style.display = (caption == null) ? "none" : "block"; - - // set the caption - this.caption = caption; - this.captionElement.innerHTML = (caption == null) ? "" : caption; - - // update style - if (!noStyleUpdate) { - this.updateStyleFromState(); - } -}; - -// Returns the enabled state. -// Override this in subclasses as required to implement the state change. -Control.prototype.isEnabled = function() { - return false; -}; - -// Sets the enabled state. -// Override this in subclasses as required to implement the state change. -Control.prototype.setEnabled = function(enabled) { - uiLogger.debug("Control.setEnabled(" + enabled + ")"); -}; - -// Returns the focusable state for the control. -// Defaults focusable if enabled - override this in subclasses as required. -Control.prototype.isFocusable = function() { - return this.isEnabled(); -}; - -// Returns the focused state for the control. -Control.prototype.isFocused = function() { - return this.focused; -}; - -// Sets the focused state for the control. -// Note: This may not always succeed. -// Override this in subclasses as required to implement the state change. -Control.prototype.setFocused = function(focused) { - uiLogger.debug("Control.setFocused(" + focused + ")"); - // note that this.focused gets set as a result of focusStateChanged() being called - // rather than setting it explicitly here -}; - -// Called when the focus state has changed for this control. -Control.prototype.focusStateChanged = function(focused) { - uiLogger.debug("Control.focusStateChanged(" + focused + ")"); - if (this.focused != focused) { - this.focused = focused; - - // let the view know about the focus change - if (this.view != null) { - this.view.focusedControlChanged(focused ? this : null); - } - - // update the style from the current state - this.updateStyleFromState(); - - // notify event listeners - this.fireEvent(this.createEvent("FocusStateChanged", focused)); - } -}; - -// Called when the hover state has changed for this control. -Control.prototype.hoverStateChanged = function(hovering) { - uiLogger.debug("Control.hoverStateChanged(" + hovering + ")"); - if (this.hovering != hovering) { - this.hovering = hovering; - - // update the style from the current state - this.updateStyleFromState(); - - // notify event listeners - this.fireEvent(this.createEvent("HoverStateChanged", hovering)); - } -}; - -// Helper method that returns the state name for the current state. -Control.prototype.getStyleStateName = function() { - var focusable = this.isFocusable(); - if (focusable && this.focused) { - return "Focus"; - } else if (focusable && this.hovering) { - return "Hover"; - } else if (!this.isEnabled()) { - return "Disabled"; - } else { - return "Normal"; - } -}; - -// Resets the state tracking for focus and hover. -// Override this in subclasses as required to implement the state reset. -Control.prototype.resetFocusState = function() { - uiLogger.debug("Control.resetFocusState()"); - this.hovering = false; - this.focused = false; - this.updateStyleFromState(); -}; - -// Helper function that sets a classname for an element. -// Only sets the class name if it actually is different from the current value. -Control.prototype.setClassName = function(element, className) { - if (element.className != className) { - element.className = className; - } -}; - -// Updates the style of the control to reflects the state of the control. -// Override this in subclasses as required to implement the state change. -Control.prototype.updateStyleFromState = function() { - uiLogger.debug("Control.updateStyleFromState()"); -};