clean up SDK/Config tree by removing SDK Id from display (it's redundant) and also adding text that SDK location does not exist so users can see the config tree and know it won't work (not have it be hidden and users wonder why it's not there)
/*
* Copyright (c) 2006 Nokia Corporation 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:
*
*/
DRAW_BOUNDING_RECTS = false;
include("renderLibrary.js")
include("implLibrary.js")
include("srcgenLibrary.js")
var FORM_ID = "com.nokia.sdt.series60.CAknForm";
function isForm(formInstance) {
return formInstance.componentId == FORM_ID;
}
function isDoubleSpaced(formInstance) {
return formInstance.properties.EEikFormUseDoubleSpacedFormat;
}
function isShowingBitmaps(formInstance) {
return formInstance.properties.EEikFormShowBitmaps;
}
function getFormSingleDividerOffset(formInstance, laf) {
return laf.getInteger("form.divider.offset.single", 20);
}
function getFormPromptDividerOffset(formInstance, laf) {
if (isDoubleSpaced(formInstance)) {
if (isShowingBitmaps(formInstance))
return laf.getInteger("form.inset", 20);
else
return laf.getInteger("form.divider.offset.double", 6);
}
return getFormSingleDividerOffset(formInstance, laf);
}
function getFormLineGap(laf) {
return laf.getInteger("form.padding", 5);
}
function getFormPadding(laf) {
return laf.getInteger("form.padding", 5);
}
/**
* Get all the rectangles associated with an item in a form.
*
* @param rect the item's rectangle (i.e. an entire row)
* @returns an array with:
*
* 0) Rectangle prompt bounds, as a whole
* 1) Rectangle content bounds, as a whole
* 2) Rectangle prompt image bounds, or null
* 3) Rectangle prompt label bounds
* 4) int column where divider is drawn
*/
var FORM_PROMPT_RECT_INDEX = 0;
var FORM_CONTENT_RECT_INDEX = 1;
var FORM_PROMPT_IMAGE_RECT_INDEX = 2;
var FORM_PROMPT_LABEL_RECT_INDEX = 3;
var FORM_DIVIDER_OFFSET_INDEX = 4;
function getFormItemRectanglesInRect(instance, laf, rect) {
var formInstance = instance.parent;
var dividerOffset = getFormPromptDividerOffset(instance.parent, laf);
var bmsize = laf.getDimension("form.image.size").x;
var promptRect, contentRect, promptImageRect = null, promptLabelRect;
// NOTE: S60 seems to NOT add padding for prompts, but we do it anyway
if (isDoubleSpaced(formInstance)) {
var promptExtent = getFontHeight(getFormPromptFont(laf));
// println("rect="+rect+", dividerOffset="+dividerOffset+", promptExtent="+promptExtent);
promptRect = new Rectangle(rect.x + dividerOffset + getFormPadding(laf), rect.y + getFormPadding(laf),
rect.width - dividerOffset - getFormPadding(laf), promptExtent);
promptLabelRect = new Rectangle(promptRect.x, promptRect.y,
promptRect.width, promptRect.height);
if (isShowingBitmaps(formInstance)) {
// image is on left side of divider, flush right
promptImageRect = new Rectangle(
rect.x + dividerOffset - bmsize - getFormPadding(laf)/3,
rect.y,
bmsize,
bmsize);
}
var leftMargin = dividerOffset + getFormPadding(laf) * 2;
contentRect = new Rectangle(rect.x + leftMargin,
rect.y + promptExtent + getFormLineGap(laf),
rect.width - leftMargin,
rect.height - promptExtent);
} else {
promptRect = new Rectangle(rect.x, rect.y,
dividerOffset - getFormPadding(laf), rect.height);
if (isShowingBitmaps(formInstance)) {
// image is on left side of label, flush left
promptImageRect = new Rectangle(
promptRect.x,
promptRect.y + (promptRect.height - bmsize) / 2,
bmsize,
bmsize);
promptLabelRect = new Rectangle(
promptRect.x + bmsize + 2, promptRect.y,
promptRect.width - bmsize, promptRect.height);
} else {
promptLabelRect = new Rectangle(
promptRect.x, promptRect.y,
promptRect.width, promptRect.height);
}
var leftMargin = dividerOffset + getFormPadding(laf);
contentRect = new Rectangle(rect.x + leftMargin, rect.y,
rect.width - leftMargin, rect.height);
}
var rects = [ promptRect, contentRect, promptImageRect, promptLabelRect, dividerOffset ];
//println( "rects = " + rects);
return rects;
}
function getFormItemRectangles(instance, laf) {
var rect = new Rectangle(0, 0,
instance.properties.size.width, instance.properties.size.height);
return getFormItemRectanglesInRect(instance, laf, rect);
}
function getFormPromptFont(laf) {
return laf.getFont("DenseFont");
}
function getFormPromptFlags(instance) {
var flags = Font.OVERFLOW_ELLIPSIS;
if (isDoubleSpaced(instance.parent) || isShowingBitmaps(instance.parent))
flags |= Font.ALIGN_LEFT;
else
flags |= Font.ALIGN_RIGHT;
return flags;
}
function isFirstField(instance) {
var siblings = instance.parent.children;
if (siblings != null)
return instance == siblings[0];
return false;
}
function drawFormPrompt(prototype, instance, laf, graphics, rects) {
var formInstance = instance.parent;
var properties = instance.properties;
var prompt = properties.prompt;
var font = getFormPromptFont(laf);
graphics.setFont(font);
var rect = rects[FORM_PROMPT_RECT_INDEX];
graphics.setBackground(laf.getColor("EEikColorWindowBackground"));
graphics.fillRectangle(rect);
graphics.setForeground(laf.getColor("EEikColorControlText"));
// in single spaced only, draw line before prompt if separator before or after is specified
// and this is not the first form field (2.x only)
var version = getComponentVersions();
if (!isDoubleSpaced(formInstance) && !isFirstField(instance) && properties.EEikDlgItemSeparatorBefore
&& version.getMajor() < 3) {
graphics.drawLine(rect.x, rect.y, rect.width + getFormPadding(laf) - 1, rect.y);
}
// draw bitmap on the left side of the divider
if (isShowingBitmaps(formInstance)) {
var imageRect = rects[FORM_PROMPT_IMAGE_RECT_INDEX];
renderImage(prototype, instance, laf, graphics,
0, 0, "promptImage", false);
}
rect = rects[FORM_PROMPT_LABEL_RECT_INDEX];
var height = getFontHeight(font);
var textRect = new Rectangle(rect.x, rect.y + (rect.height - height)/2,
rect.width, height);
var promptText = chooseScalableText(prompt, font, textRect.width);
graphics.drawFormattedString(promptText, textRect, getFormPromptFlags(instance), 0);
}
function getFormContentBounds(instance, laf) {
var rect = new Rectangle(0, 0,
instance.properties.size.width, instance.properties.size.height);
if (isForm(instance.parent)) {
return getFormItemRectanglesInRect(instance, laf, rect)[FORM_CONTENT_RECT_INDEX];
}
return rect;
}