--- 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()");
-};