javauis/lcdui_akn/lcdui/src/CMIDComponentFactory.cpp
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/lcdui_akn/lcdui/src/CMIDComponentFactory.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,327 @@
+/*
+* Copyright (c) 2003-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:  ?Description
+*
+*/
+
+// Using debug macros.
+#include <j2me/jdebug.h>
+
+#include <coecntrl.h>
+#include <lcdui.h>
+//
+#include "CMIDDisplayable.h"
+#include "CMIDTicker.h"
+#include "CMIDForm.h"
+// needed for creating alert
+#include "CMIDAlert.h"
+#include "CMIDCanvas.h"
+// needed for creating font
+#include "CMIDFont.h"
+#include "CMIDItem.h"
+#include "CMIDControlItem.h"
+// needed for creating image item
+#include "CMIDImageItem.h"
+// needed for creating string item
+#include "CMIDStringItem.h"
+// needed for creating date field item
+#include "CMIDDateFieldItem.h"
+// needed for creating gauge
+#include "CMIDGaugeItem.h"
+// needed for creating text box control
+#include "CMIDTextBoxControl.h"
+// needed for creating popup text box control
+#include "CMIDTextBoxDialogControl.h"
+// needed for creating text field item
+#include "CMIDTextFieldItem.h"
+// needed for creating utils
+#include "CMIDUtils.h"
+// for iUIManager member
+#include "CMIDUIManager.h"
+#include "CMIDCommand.h"
+// needed for creating spacer
+#include "CMIDSpacer.h"
+// needed for creating custom item
+#include "CMIDCustomItem.h"
+#include "CMIDComponentFactory.h"
+// needed for creating list
+#include "CMIDList.h"
+// needed for creating choice group
+#include "CMIDChoiceGroupItem.h"
+// needed for creating text editor
+#include "CMIDTextEditor.h"
+// needed for creating canvas graphics item
+#include "CMIDCanvasGraphicsItem.h"
+#include "CMIDCanvasGraphicsItemPainter.h"
+
+CMIDComponentFactory::CMIDComponentFactory() : iUtils(NULL)
+{
+}
+
+CMIDComponentFactory::~CMIDComponentFactory()
+{
+    displayableCreated = EFalse;
+    delete iUIManager;
+    if (iUtils)
+    {
+        iUtils->Dispose();
+        iUtils = NULL;
+    }
+}
+
+/**
+ *
+ * ComponentFactory implementation
+ *
+ */
+void CMIDComponentFactory::ConstructL(MMIDEnv& aEnv)
+{
+    iEnv = &aEnv;
+    displayableCreated = EFalse;
+    iUIManager = CMIDUIManager::NewL(aEnv);
+}
+
+MMIDDisplayable* CMIDComponentFactory::CreateDisplayableL()
+{
+    return CMIDDisplayable::NewL(*iEnv,*iUIManager);
+}
+
+MMIDCanvas* CMIDComponentFactory::CreateCanvasL(
+    MMIDDisplayable& aDisplayable,MMIDComponent::TType aCanvasType)
+{
+    CCoeControl& window = static_cast< CMIDDisplayable& >(aDisplayable).ContentWindow();
+    displayableCreated = ETrue;
+    return CMIDCanvas::NewL(*iEnv, window, aCanvasType);
+}
+
+MMIDAlert* CMIDComponentFactory::CreateAlertL(MMIDDisplayable& aDisplayable,MMIDAlert::TAlertType aType,const TDesC& aString,MMIDImage* aImage)
+{
+    if (!iUIManager->OpenMenuHandlerL()->GetDisplayable() && !displayableCreated)
+    {
+        iUIManager->OpenDefaultDisplayableL(ETrue);
+    }
+    return CMIDAlert::NewL(
+               *iEnv, aType, aDisplayable, aString, aImage, GetUtils());
+}
+
+MMIDForm* CMIDComponentFactory::CreateFormL(MMIDDisplayable& aDisplayable)
+{
+    displayableCreated = ETrue;
+    return CMIDForm::NewL(*iEnv,aDisplayable);
+}
+
+MMIDList* CMIDComponentFactory::CreateListL(TInt aType,MMIDDisplayable& aDisplayable,RArray<TPtrC>& aStringArray, RArray<MMIDImage*>& aImageArray)
+{
+    displayableCreated = ETrue;
+    return CMIDList::NewL(*iEnv,aDisplayable,aType,aStringArray,aImageArray);
+}
+
+MMIDTextBox* CMIDComponentFactory::CreateTextBoxL(TInt aConstraints, TInt aMaxSize, const TDesC& aText, MMIDDisplayable& aDisplayable)
+{
+    if (iEnv->MidletAttributeContainsVal(LcduiMidletAttributes::KAttribUIEnhancement, LcduiMidletAttributeValues::KUIEnhFullScreenTextBox))
+    {
+        return CMIDTextBoxControl::NewL(aConstraints, aText, aMaxSize, &aDisplayable);
+    }
+    else
+    {
+        if (!iUIManager->OpenMenuHandlerL()->GetDisplayable() && !displayableCreated)
+        {
+            iUIManager->OpenDefaultDisplayableL(ETrue);
+        }
+        return CMIDTextBoxDialogControl::NewL(aConstraints, aText, aMaxSize, &aDisplayable);
+    }
+}
+
+MMIDImageItem* CMIDComponentFactory::CreateImageItemL(
+    const TDesC& aLabel, MMIDImage* aImage, MMIDItem::TLayout aLayout,
+    MMIDItem::TAppearance aAppearance, const TDesC& aAltText)
+{
+    return CMIDImageItem::NewL(aLabel, aImage, aLayout, aAppearance, aAltText, iUIManager);
+}
+
+MMIDCustomItem* CMIDComponentFactory::CreateCustomItemL(const TDesC& aLabel)
+{
+    return CMIDCustomItem::NewL(*iEnv, aLabel, iUIManager);
+}
+
+MMIDStringItem* CMIDComponentFactory::CreateStringItemL(const TDesC& aLabel,const TDesC& aText,MMIDItem::TAppearance aAppearance)
+{
+    return CMIDStringItem::NewL(aLabel, aText, aAppearance, iUIManager);
+}
+
+MMIDDateField* CMIDComponentFactory::CreateDateFieldL(
+    const TDesC& aLabel, MMIDDateField::TFieldType aFieldType)
+{
+    return CMIDDateFieldItem::NewL(aLabel, aFieldType, iUIManager);
+}
+
+MMIDGauge* CMIDComponentFactory::CreateGaugeL(
+    const TDesC& aLabel, TBool aInteractive, TInt aMaxValue, TInt aInitialValue)
+{
+    if (aInteractive)
+    {
+        return CMIDInteractiveGauge::NewL(aLabel, aMaxValue, aInitialValue, iUIManager);
+    }
+    else
+    {
+        return CMIDNonInteractiveGauge::NewL(aLabel, aMaxValue, aInitialValue , iUIManager);
+    }
+}
+
+MMIDTextField* CMIDComponentFactory::CreateTextFieldL(
+    const TDesC& aLabel, const TDesC& aText, TInt aConstraints, TInt aMaxSize)
+{
+    if (!iUIManager->OpenMenuHandlerL()->GetDisplayable())
+    {
+        iUIManager->OpenDefaultDisplayableL(EFalse);
+    }
+    return CMIDTextFieldItem::NewL(aLabel, aText, aConstraints, aMaxSize, iUIManager);
+}
+
+MMIDChoiceGroup* CMIDComponentFactory::CreateChoiceGroupL(
+    const TDesC& aLabel, TInt aType, RArray<TPtrC>& aStringArray, RArray<MMIDImage*>& aImageArray)
+{
+    return CMIDChoiceGroupItem::NewL(
+               *iEnv, aLabel, aType, aStringArray, aImageArray, iUIManager);
+}
+
+MMIDSpacer* CMIDComponentFactory::CreateSpacerL(const TSize& aMinimumSize)
+{
+    return CMIDSpacer::NewL(aMinimumSize, iUIManager);
+}
+
+MMIDFont* CMIDComponentFactory::CreateFontL(
+    TUint aStyle, TUint aSize, TInt aFace, TBool aIsFreeSizeFont)
+{
+    return CMIDFont::NewL(aStyle, aSize, aFace, iUIManager, aIsFreeSizeFont);
+}
+
+MMIDTicker* CMIDComponentFactory::CreateTickerL(const TDesC& aText)
+{
+    return CMIDTicker::NewL(aText);
+}
+
+MMIDCommand* CMIDComponentFactory::CreateCommandL(
+    const TDesC& aShortLabel, const TDesC& aLongLabel,
+    MMIDCommand::TCommandType aCommandType, TInt aPriority, TInt aCommandID)
+{
+    return CMIDCommand::NewL(aShortLabel,aLongLabel,aCommandType,aPriority,aCommandID);
+}
+
+MMIDUtils* CMIDComponentFactory::CreateUtilsL()
+{
+    return CMIDUtils::NewL(*iEnv, iUIManager);
+}
+
+// ---------------------------------------------------------------------------
+// CMIDComponentFactory::CreateTextEditorL
+// (other items are commented in the header file)
+// ---------------------------------------------------------------------------
+//
+MMIDTextEditor* CMIDComponentFactory::CreateTextEditorL(
+    TInt aMaxSize,
+    TInt aWidth,
+    TInt aHeight,
+    TBool aHeightInRows)
+{
+    DEBUG("CMIDComponentFactory::CreateTextEditorL +");
+
+    CMIDTextEditor::TCtorParams params;
+
+    params.iMaxSize = aMaxSize;
+    params.iWidth = aWidth;
+    params.iHeight = aHeight;
+    params.iHeightInRows = aHeightInRows;
+    params.iUtils = GetUtils();
+
+    MMIDTextEditor* editor = CMIDTextEditor::NewL(params);
+
+    DEBUG("CMIDComponentFactory::CreateTextEditorL -");
+
+    return editor;
+}
+
+// ---------------------------------------------------------------------------
+// CMIDComponentFactory::CreateCanvasGraphicsItemL
+// (other items are commented in the header file)
+// ---------------------------------------------------------------------------
+//
+MMIDCanvasGraphicsItem* CMIDComponentFactory::CreateCanvasGraphicsItemL(
+    MMIDCanvasGraphicsItemPainter* aItemPainter)
+{
+    DEBUG("CMIDComponentFactory::CreateCanvasGraphicsItemL +");
+
+    CMIDCanvasGraphicsItem::TCtorParams params;
+
+    params.iPainterHandle =
+        static_cast<CMIDCanvasGraphicsItemPainter*>(aItemPainter);
+    params.iUtils = GetUtils();
+
+    MMIDCanvasGraphicsItem* item = CMIDCanvasGraphicsItem::NewL(params);
+
+    DEBUG("CMIDComponentFactory::CreateCanvasGraphicsItemL -");
+
+    return item;
+}
+
+// ---------------------------------------------------------------------------
+// CMIDComponentFactory::CreateCanvasGraphicsItemPainterL
+// (other items are commented in the header file)
+// ---------------------------------------------------------------------------
+//
+MMIDCanvasGraphicsItemPainter*
+CMIDComponentFactory::CreateCanvasGraphicsItemPainterL(
+    TInt aWidth,
+    TInt aHeight)
+{
+    DEBUG("CMIDComponentFactory::CreateCanvasGraphicsItemPainterL +");
+
+    CMIDCanvasGraphicsItemPainter::TCtorParams params;
+
+    params.iWidth = aWidth;
+    params.iHeight = aHeight;
+    params.iEnv = iEnv;
+
+    MMIDCanvasGraphicsItemPainter* itemPainter =
+        CMIDCanvasGraphicsItemPainter::NewL(params);
+
+    DEBUG("CMIDComponentFactory::CreateCanvasGraphicsItemPainterL -");
+
+    return itemPainter;
+}
+
+void CMIDComponentFactory::Dispose()
+{
+    delete this;
+}
+
+CMIDUtils* CMIDComponentFactory::GetUtils()
+{
+    // If iUtils is not initialized, this method will initialized it.
+    if (!iUtils)
+    {
+
+        TRAPD(err, iUtils = static_cast<CMIDUtils*>(CreateUtilsL()));
+        if (err != KErrNone)
+        {
+            DEBUG_INT("CMIDComponentFactory::GetUtils - error %d", err);
+            iUtils = NULL;
+        }
+
+    }
+    // Return shared instance of CMIDUtils: iUtils.
+    return iUtils;
+}
+
+// End of File