Step 1 of cleaning up link time toolkit dependencies. Put the widget

factories in the toolkit specific widget libs.
This commit is contained in:
ramiro%netscape.com 1999-07-17 21:23:46 +00:00
Родитель e1a0c17212
Коммит ed95a87077
12 изменённых файлов: 411 добавлений и 981 удалений

Просмотреть файл

@ -38,33 +38,34 @@ INCLUDES+= -I$(srcdir)/../xpwidgets -I$(srcdir)/.
INCLUDES += $(TK_CFLAGS)
CPPSRCS = \
nsPopUpMenu.cpp \
nsMenuBar.cpp \
nsMenu.cpp \
nsMenuItem.cpp \
nsObject.cpp \
nsWindow.cpp \
nsAppShell.cpp \
nsButton.cpp \
nsCheckButton.cpp \
nsRadioButton.cpp \
nsDragService.cpp \
nsListBox.cpp \
nsClipboard.cpp \
nsComboBox.cpp \
nsTextWidget.cpp \
nsTextHelper.cpp \
nsTextAreaWidget.cpp\
nsDragService.cpp \
nsFileWidget.cpp \
nsScrollbar.cpp \
nsTabWidget.cpp \
nsTooltipWidget.cpp \
nsAppShell.cpp \
nsLabel.cpp \
nsToolkit.cpp \
nsSound.cpp \
nsFontRetrieverService.cpp \
nsFontSizeIterator.cpp \
nsClipboard.cpp \
nsLabel.cpp \
nsListBox.cpp \
nsLookAndFeel.cpp \
nsMenu.cpp \
nsMenuBar.cpp \
nsMenuItem.cpp \
nsObject.cpp \
nsPopUpMenu.cpp \
nsRadioButton.cpp \
nsScrollbar.cpp \
nsSound.cpp \
nsTabWidget.cpp \
nsTextAreaWidget.cpp\
nsTextHelper.cpp \
nsTextWidget.cpp \
nsToolkit.cpp \
nsTooltipWidget.cpp \
nsWidgetFactory.cpp \
nsWindow.cpp \
$(NULL)
TARGETS = $(LIBRARY)

Просмотреть файл

@ -1,4 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
@ -18,33 +18,39 @@
#include "nsIFactory.h"
#include "nsISupports.h"
#include "nsdefs.h"
#include "nsIButton.h"
#include "nsITextWidget.h"
#include "nsWidgetsCID.h"
#include "nsToolkit.h"
#include "nsWindow.h"
#include "nsAppShell.h"
#include "nsButton.h"
#include "nsScrollbar.h"
#include "nsCheckButton.h"
#include "nsComboBox.h"
#include "nsRadioButton.h"
#include "nsTextWidget.h"
#include "nsTextAreaWidget.h"
#include "nsFileWidget.h"
#include "nsListBox.h"
#include "nsComboBox.h"
#include "nsLookAndFeel.h"
#include "nsRadioButton.h"
#include "nsScrollbar.h"
#include "nsTextAreaWidget.h"
#include "nsTextHelper.h"
#include "nsTextWidget.h"
#include "nsToolkit.h"
#include "nsTabWidget.h"
#include "nsTooltipWidget.h"
#include "nsWindow.h"
#include "nsDialog.h"
#include "nsLabel.h"
#include "nsMenuBar.h"
#include "nsMenu.h"
#include "nsMenuItem.h"
#include "nsPopUpMenu.h"
#include "nsImageButton.h"
#include "nsMenuButton.h"
#include "nsAppShell.h"
#include "nsTabWidget.h"
#include "nsTooltipWidget.h"
#include "nsFontRetrieverService.h"
// Drag & Drop, Clipboard
#include "nsClipboard.h"
#include "nsTransferable.h"
#include "nsXIFFormatConverter.h"
#include "nsDragService.h"
#include "nsISound.h"
static NS_DEFINE_IID(kCWindow, NS_WINDOW_CID);
static NS_DEFINE_IID(kCChild, NS_CHILD_CID);
@ -63,130 +69,142 @@ static NS_DEFINE_IID(kCTooltipWidget, NS_TOOLTIPWIDGET_CID);
static NS_DEFINE_IID(kCAppShell, NS_APPSHELL_CID);
static NS_DEFINE_IID(kCToolkit, NS_TOOLKIT_CID);
static NS_DEFINE_IID(kCLookAndFeel, NS_LOOKANDFEEL_CID);
static NS_DEFINE_IID(kCDialog, NS_DIALOG_CID);
static NS_DEFINE_IID(kCLabel, NS_LABEL_CID);
static NS_DEFINE_IID(kCMenuBar, NS_MENUBAR_CID);
static NS_DEFINE_IID(kCMenu, NS_MENU_CID);
static NS_DEFINE_IID(kCMenuItem, NS_MENUITEM_CID);
static NS_DEFINE_IID(kCImageButton, NS_IMAGEBUTTON_CID);
static NS_DEFINE_IID(kCPopUpMenu, NS_POPUPMENU_CID);
static NS_DEFINE_IID(kCMenuButton, NS_MENUBUTTON_CID);
static NS_DEFINE_IID(kCFontRetrieverService, NS_FONTRETRIEVERSERVICE_CID);
// Drag & Drop, Clipboard
static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID);
static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_IID(kCDataFlavor, NS_DATAFLAVOR_CID);
static NS_DEFINE_IID(kCXIFFormatConverter, NS_XIFFORMATCONVERTER_CID);
static NS_DEFINE_IID(kCDragService, NS_DRAGSERVICE_CID);
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
// Sound services (just Beep for now)
static NS_DEFINE_CID(kCSound, NS_SOUND_CID);
class nsWidgetFactory : public nsIFactory
{
public:
// nsISupports methods
NS_DECL_ISUPPORTS
// nsIFactory methods
NS_IMETHOD CreateInstance(nsISupports *aOuter,
const nsIID &aIID,
void **aResult);
const nsIID &aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
nsWidgetFactory(const nsCID &aClass);
~nsWidgetFactory();
virtual ~nsWidgetFactory();
private:
nsCID mClassID;
};
private:
nsCID mClassID;
};
NS_IMPL_ADDREF(nsWidgetFactory)
NS_IMPL_RELEASE(nsWidgetFactory)
nsWidgetFactory::nsWidgetFactory(const nsCID &aClass)
{
NS_INIT_REFCNT();
mClassID = aClass;
NS_INIT_REFCNT();
mClassID = aClass;
}
nsWidgetFactory::~nsWidgetFactory()
{
NS_ASSERTION(mRefCnt == 0, "Reference count not zero in destructor");
NS_ASSERTION(mRefCnt == 0, "Reference count not zero in destructor");
}
nsresult nsWidgetFactory::QueryInterface(const nsIID &aIID,
void **aResult)
{
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
if (NULL == aResult) {
return NS_ERROR_NULL_POINTER;
}
// Always NULL result, in case of failure
*aResult = NULL;
*aResult = NULL;
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *)(nsISupports*)this;
} else if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *)(nsIFactory*)this;
}
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *)(nsISupports *)this;
} else if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *)(nsIFactory *)this;
}
if (*aResult == NULL) {
return NS_NOINTERFACE;
}
if (*aResult == NULL) {
return NS_NOINTERFACE;
}
NS_ADDREF_THIS(); // Increase reference count for caller
return NS_OK;
NS_ADDREF_THIS();
return NS_OK;
}
NS_IMPL_ADDREF(nsWidgetFactory)
NS_IMPL_RELEASE(nsWidgetFactory)
nsresult nsWidgetFactory::CreateInstance( nsISupports* aOuter,
nsresult nsWidgetFactory::CreateInstance(nsISupports *aOuter,
const nsIID &aIID,
void **aResult)
{
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (nsnull != aOuter) {
return NS_ERROR_NO_AGGREGATION;
}
*aResult = NULL;
if (nsnull != aOuter)
return NS_ERROR_NO_AGGREGATION;
nsISupports *inst = nsnull;
if (mClassID.Equals(kCWindow) ||
mClassID.Equals(kCChild)) {
inst = (nsISupports*)new nsWindow();
if (mClassID.Equals(kCWindow)) {
inst = (nsISupports *)new nsWindow();
}
else if (mClassID.Equals(kCChild)) {
inst = (nsISupports *)new ChildWindow();
}
else if (mClassID.Equals(kCButton)) {
inst = (nsISupports*)(nsWindow*)new nsButton();
inst = (nsISupports*)(nsWindow *)new nsButton();
}
else if (mClassID.Equals(kCCheckButton)) {
inst = (nsISupports*)(nsWindow*)new nsCheckButton();
inst = (nsISupports*)(nsWindow *)new nsCheckButton();
}
else if (mClassID.Equals(kCCombobox)) {
inst = (nsISupports*)(nsWindow*)new nsComboBox();
inst = (nsISupports*)(nsWindow *)new nsComboBox();
}
else if (mClassID.Equals(kCRadioButton)) {
inst = (nsISupports*)(nsWindow*)new nsRadioButton();
inst = (nsISupports*)(nsWindow *)new nsRadioButton();
}
else if (mClassID.Equals(kCFileOpen)) {
inst = (nsISupports*)new nsFileWidget();
}
else if (mClassID.Equals(kCListbox)) {
inst = (nsISupports*)(nsWindow*)new nsListBox();
inst = (nsISupports*)(nsWindow *)new nsListBox();
}
else if (mClassID.Equals(kCHorzScrollbar)) {
inst = (nsISupports*)(nsWindow*)new nsScrollbar(PR_FALSE);
inst = (nsISupports*)(nsWindow *)new nsScrollbar(PR_FALSE);
}
else if (mClassID.Equals(kCVertScrollbar)) {
inst = (nsISupports*)(nsWindow*)new nsScrollbar(PR_TRUE);
inst = (nsISupports*)(nsWindow *)new nsScrollbar(PR_TRUE);
}
else if (mClassID.Equals(kCTextArea)) {
inst = (nsISupports*)(nsWindow*)new nsTextAreaWidget();
inst = (nsISupports*)(nsWindow *)new nsTextAreaWidget();
}
else if (mClassID.Equals(kCTextField)) {
inst = (nsISupports*)(nsWindow*)new nsTextWidget();
inst = (nsISupports*)(nsWindow *)new nsTextWidget();
}
else if (mClassID.Equals(kCTabWidget)) {
inst = (nsISupports*)(nsWindow*)new nsTabWidget();
inst = (nsISupports*)(nsWindow *)new nsTabWidget();
}
else if (mClassID.Equals(kCTooltipWidget)) {
inst = (nsISupports*)(nsWindow*)new nsTooltipWidget();
inst = (nsISupports*)(nsWindow *)new nsTooltipWidget();
}
else if (mClassID.Equals(kCAppShell)) {
inst = (nsISupports*)new nsAppShell();
@ -197,31 +215,44 @@ nsresult nsWidgetFactory::CreateInstance( nsISupports* aOuter,
else if (mClassID.Equals(kCLookAndFeel)) {
inst = (nsISupports*)new nsLookAndFeel();
}
else if (mClassID.Equals(kCDialog)) {
inst = (nsISupports*)(nsWindow*)new nsDialog();
}
else if (mClassID.Equals(kCLabel)) {
inst = (nsISupports*)(nsWindow*)new nsLabel();
inst = (nsISupports*)(nsWindow *)new nsLabel();
}
else if (mClassID.Equals(kCMenuBar)) {
inst = (nsISupports*)(nsIMenuBar*) new nsMenuBar();
inst = (nsISupports*)(nsIMenuBar *)new nsMenuBar();
}
else if (mClassID.Equals(kCMenu)) {
inst = (nsISupports*)(nsIMenu*) new nsMenu();
inst = (nsISupports*)(nsIMenu *)new nsMenu();
}
else if (mClassID.Equals(kCMenuItem)) {
inst = (nsISupports*)(nsIMenuItem*) new nsMenuItem();
}
else if (mClassID.Equals(kCImageButton)) {
inst = (nsISupports*)(nsWindow*)new nsImageButton();
}
else if (mClassID.Equals(kCMenuButton)) {
inst = (nsISupports*)(nsWindow*)new nsMenuButton();
inst = (nsISupports*)(nsIMenuItem *)new nsMenuItem();
}
else if (mClassID.Equals(kCPopUpMenu)) {
inst = (nsISupports*)new nsPopUpMenu();
}
/* */
else if (mClassID.Equals(kCSound)) {
nsISound* aSound = nsnull;
NS_NewSound(&aSound);
inst = (nsISupports*) aSound;
}
else if (mClassID.Equals(kCTransferable)) {
inst = (nsISupports*)new nsTransferable();
}
else if (mClassID.Equals(kCClipboard)) {
inst = (nsISupports*)new nsClipboard();
}
else if (mClassID.Equals(kCXIFFormatConverter)) {
inst = (nsISupports*)new nsXIFFormatConverter();
}
else if (mClassID.Equals(kCFontRetrieverService)) {
inst = (nsISupports*)(nsIFontRetrieverService *) new nsFontRetrieverService();
}
else if (mClassID.Equals(kCDragService)) {
inst = (nsISupports*) (nsIDragService *) new nsDragService();
}
else {
printf("nsWidgetFactory::CreateInstance(), unhandled class.\n");
}
if (inst == NULL) {
return NS_ERROR_OUT_OF_MEMORY;
@ -234,7 +265,8 @@ nsresult nsWidgetFactory::CreateInstance( nsISupports* aOuter,
delete inst;
}
return res;
return res;
}
nsresult nsWidgetFactory::LockFactory(PRBool aLock)
@ -251,17 +283,17 @@ NSGetFactory(nsISupports* serviceMgr,
const char *aProgID,
nsIFactory **aFactory)
{
if (nsnull == aFactory) {
return NS_ERROR_NULL_POINTER;
}
if (nsnull == aFactory) {
return NS_ERROR_NULL_POINTER;
}
*aFactory = new nsWidgetFactory(aClass);
*aFactory = new nsWidgetFactory(aClass);
if (nsnull == aFactory) {
return NS_ERROR_OUT_OF_MEMORY;
}
if (nsnull == aFactory) {
return NS_ERROR_OUT_OF_MEMORY;
}
return (*aFactory)->QueryInterface(kIFactoryIID, (void**)aFactory);
return (*aFactory)->QueryInterface(kIFactoryIID, (void**)aFactory);
}

Просмотреть файл

@ -34,22 +34,7 @@ LOCAL_INCLUDES := \
-I$(srcdir)/. \
$(NULL)
CPPSRCS_gtk := \
nsGTKWidgetFactory.cpp
CPPSRCS_photon := \
nsPhWidgetFactory.cpp
# nsMotifWidgetFactory actually has no Motif/Xt/Xlib code in it -- surprise!
CPPSRCS_motif := \
nsMotifWidgetFactory.cpp
CPPSRCS_beos := \
nsBeOSWidgetFactory.cpp
CPPSRCS := \
$(CPPSRCS_$(MOZ_WIDGET_TOOLKIT)) \
nsWidgetSupport.cpp \
$(NULL)

Просмотреть файл

@ -1,299 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsIFactory.h"
#include "nsISupports.h"
#include "nsIButton.h"
#include "nsITextWidget.h"
#include "nsWidgetsCID.h"
#include "nsToolkit.h"
#include "nsWindow.h"
#include "nsAppShell.h"
#include "nsButton.h"
#include "nsScrollbar.h"
#include "nsCheckButton.h"
#include "nsRadioButton.h"
#include "nsTextWidget.h"
#include "nsTextAreaWidget.h"
#include "nsFileWidget.h"
#include "nsListBox.h"
#include "nsComboBox.h"
#include "nsLookAndFeel.h"
#include "nsLabel.h"
#include "nsMenuBar.h"
#include "nsMenu.h"
#include "nsMenuItem.h"
#include "nsPopUpMenu.h"
#include "nsTabWidget.h"
#include "nsTooltipWidget.h"
#include "nsFontRetrieverService.h"
// Drag & Drop, Clipboard
#include "nsClipboard.h"
#include "nsTransferable.h"
#include "nsXIFFormatConverter.h"
#include "nsDragService.h"
#include "nsISound.h"
static NS_DEFINE_IID(kCWindow, NS_WINDOW_CID);
static NS_DEFINE_IID(kCChild, NS_CHILD_CID);
static NS_DEFINE_IID(kCButton, NS_BUTTON_CID);
static NS_DEFINE_IID(kCCheckButton, NS_CHECKBUTTON_CID);
static NS_DEFINE_IID(kCCombobox, NS_COMBOBOX_CID);
static NS_DEFINE_IID(kCFileOpen, NS_FILEWIDGET_CID);
static NS_DEFINE_IID(kCListbox, NS_LISTBOX_CID);
static NS_DEFINE_IID(kCRadioButton, NS_RADIOBUTTON_CID);
static NS_DEFINE_IID(kCHorzScrollbar, NS_HORZSCROLLBAR_CID);
static NS_DEFINE_IID(kCVertScrollbar, NS_VERTSCROLLBAR_CID);
static NS_DEFINE_IID(kCTextArea, NS_TEXTAREA_CID);
static NS_DEFINE_IID(kCTextField, NS_TEXTFIELD_CID);
static NS_DEFINE_IID(kCTabWidget, NS_TABWIDGET_CID);
static NS_DEFINE_IID(kCTooltipWidget, NS_TOOLTIPWIDGET_CID);
static NS_DEFINE_IID(kCAppShell, NS_APPSHELL_CID);
static NS_DEFINE_IID(kCToolkit, NS_TOOLKIT_CID);
static NS_DEFINE_IID(kCLookAndFeel, NS_LOOKANDFEEL_CID);
static NS_DEFINE_IID(kCLabel, NS_LABEL_CID);
static NS_DEFINE_IID(kCMenuBar, NS_MENUBAR_CID);
static NS_DEFINE_IID(kCMenu, NS_MENU_CID);
static NS_DEFINE_IID(kCMenuItem, NS_MENUITEM_CID);
static NS_DEFINE_IID(kCPopUpMenu, NS_POPUPMENU_CID);
static NS_DEFINE_IID(kCFontRetrieverService, NS_FONTRETRIEVERSERVICE_CID);
// Drag & Drop, Clipboard
static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID);
static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_IID(kCDataFlavor, NS_DATAFLAVOR_CID);
static NS_DEFINE_IID(kCXIFFormatConverter, NS_XIFFORMATCONVERTER_CID);
static NS_DEFINE_IID(kCDragService, NS_DRAGSERVICE_CID);
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
// Sound services (just Beep for now)
static NS_DEFINE_CID(kCSound, NS_SOUND_CID);
class nsWidgetFactory : public nsIFactory
{
public:
NS_DECL_ISUPPORTS
// nsIFactory methods
NS_IMETHOD CreateInstance(nsISupports *aOuter,
const nsIID &aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
nsWidgetFactory(const nsCID &aClass);
virtual ~nsWidgetFactory();
private:
nsCID mClassID;
};
nsWidgetFactory::nsWidgetFactory(const nsCID &aClass)
{
NS_INIT_REFCNT();
mClassID = aClass;
}
nsWidgetFactory::~nsWidgetFactory()
{
NS_ASSERTION(mRefCnt == 0, "Reference count not zero in destructor");
}
nsresult nsWidgetFactory::QueryInterface(const nsIID &aIID,
void **aResult)
{
if (NULL == aResult) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *)(nsISupports *)this;
} else if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *)(nsIFactory *)this;
}
if (*aResult == NULL) {
return NS_NOINTERFACE;
}
NS_ADDREF_THIS();
return NS_OK;
}
NS_IMPL_ADDREF(nsWidgetFactory)
NS_IMPL_RELEASE(nsWidgetFactory)
nsresult nsWidgetFactory::CreateInstance(nsISupports *aOuter,
const nsIID &aIID,
void **aResult)
{
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (nsnull != aOuter)
return NS_ERROR_NO_AGGREGATION;
nsISupports *inst = nsnull;
if (mClassID.Equals(kCWindow)) {
inst = (nsISupports *)new nsWindow();
}
else if (mClassID.Equals(kCChild)) {
inst = (nsISupports *)new ChildWindow();
}
else if (mClassID.Equals(kCButton)) {
inst = (nsISupports*)(nsWindow *)new nsButton();
}
else if (mClassID.Equals(kCCheckButton)) {
inst = (nsISupports*)(nsWindow *)new nsCheckButton();
}
else if (mClassID.Equals(kCCombobox)) {
inst = (nsISupports*)(nsWindow *)new nsComboBox();
}
else if (mClassID.Equals(kCRadioButton)) {
inst = (nsISupports*)(nsWindow *)new nsRadioButton();
}
else if (mClassID.Equals(kCFileOpen)) {
inst = (nsISupports*)new nsFileWidget();
}
else if (mClassID.Equals(kCListbox)) {
inst = (nsISupports*)(nsWindow *)new nsListBox();
}
else if (mClassID.Equals(kCHorzScrollbar)) {
inst = (nsISupports*)(nsWindow *)new nsScrollbar(PR_FALSE);
}
else if (mClassID.Equals(kCVertScrollbar)) {
inst = (nsISupports*)(nsWindow *)new nsScrollbar(PR_TRUE);
}
else if (mClassID.Equals(kCTextArea)) {
inst = (nsISupports*)(nsWindow *)new nsTextAreaWidget();
}
else if (mClassID.Equals(kCTextField)) {
inst = (nsISupports*)(nsWindow *)new nsTextWidget();
}
else if (mClassID.Equals(kCTabWidget)) {
inst = (nsISupports*)(nsWindow *)new nsTabWidget();
}
else if (mClassID.Equals(kCTooltipWidget)) {
inst = (nsISupports*)(nsWindow *)new nsTooltipWidget();
}
else if (mClassID.Equals(kCAppShell)) {
inst = (nsISupports*)new nsAppShell();
}
else if (mClassID.Equals(kCToolkit)) {
inst = (nsISupports*)new nsToolkit();
}
else if (mClassID.Equals(kCLookAndFeel)) {
inst = (nsISupports*)new nsLookAndFeel();
}
else if (mClassID.Equals(kCLabel)) {
inst = (nsISupports*)(nsWindow *)new nsLabel();
}
else if (mClassID.Equals(kCMenuBar)) {
inst = (nsISupports*)(nsIMenuBar *)new nsMenuBar();
}
else if (mClassID.Equals(kCMenu)) {
inst = (nsISupports*)(nsIMenu *)new nsMenu();
}
else if (mClassID.Equals(kCMenuItem)) {
inst = (nsISupports*)(nsIMenuItem *)new nsMenuItem();
}
else if (mClassID.Equals(kCPopUpMenu)) {
inst = (nsISupports*)new nsPopUpMenu();
}
else if (mClassID.Equals(kCSound)) {
nsISound* aSound = nsnull;
NS_NewSound(&aSound);
inst = (nsISupports*) aSound;
}
else if (mClassID.Equals(kCTransferable)) {
inst = (nsISupports*)new nsTransferable();
}
else if (mClassID.Equals(kCClipboard)) {
inst = (nsISupports*)new nsClipboard();
}
else if (mClassID.Equals(kCXIFFormatConverter)) {
inst = (nsISupports*)new nsXIFFormatConverter();
}
else if (mClassID.Equals(kCFontRetrieverService)) {
inst = (nsISupports*)(nsIFontRetrieverService *) new nsFontRetrieverService();
}
else if (mClassID.Equals(kCDragService)) {
inst = (nsISupports*) (nsIDragService *) new nsDragService();
}
else {
printf("nsWidgetFactory::CreateInstance(), unhandled class.\n");
}
if (inst == NULL) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsresult res = inst->QueryInterface(aIID, aResult);
if (res != NS_OK) {
// We didn't get the right interface, so clean up
delete inst;
}
return res;
}
nsresult nsWidgetFactory::LockFactory(PRBool aLock)
{
// Not implemented in simplest case.
return NS_OK;
}
// return the proper factory to the caller
extern "C" NS_WIDGET nsresult
NSGetFactory(nsISupports* serviceMgr,
const nsCID &aClass,
const char *aClassName,
const char *aProgID,
nsIFactory **aFactory)
{
if (nsnull == aFactory) {
return NS_ERROR_NULL_POINTER;
}
*aFactory = new nsWidgetFactory(aClass);
if (nsnull == aFactory) {
return NS_ERROR_OUT_OF_MEMORY;
}
return (*aFactory)->QueryInterface(kIFactoryIID, (void**)aFactory);
}

Просмотреть файл

@ -1,344 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* Interface Headers */
#include "nsIFactory.h"
#include "nsISupports.h"
#include "nsIButton.h"
#include "nsILabel.h"
#include "nsICheckButton.h"
#include "nsIRadioButton.h"
#include "nsITextWidget.h"
#include "nsITextAreaWidget.h"
#include "nsIListBox.h"
#include "nsIFileWidget.h"
#include "nsFileSpecWithUIImpl.h"
#include "nsIComboBox.h"
#include "nsISound.h"
#include "nsWidgetsCID.h"
/* Implmentation Headers */
#include "nsToolkit.h"
#include "nsWindow.h"
#include "nsAppShell.h"
#include "nsLookAndFeel.h"
#include "nsButton.h"
#include "nsCheckButton.h"
#include "nsRadioButton.h"
#include "nsMenuBar.h"
#include "nsMenu.h"
#include "nsMenuItem.h"
#include "nsTextWidget.h"
#include "nsTextAreaWidget.h"
#include "nsScrollbar.h"
#include "nsListBox.h"
#include "nsFileWidget.h"
#include "nsComboBox.h"
#include "nsLabel.h"
#include "nsClipboard.h"
#include "nsTransferable.h"
#include "nsXIFFormatConverter.h"
#include "nsPhWidgetLog.h"
static NS_DEFINE_IID(kCWindow, NS_WINDOW_CID);
static NS_DEFINE_IID(kCChild, NS_CHILD_CID);
static NS_DEFINE_IID(kCButton, NS_BUTTON_CID);
static NS_DEFINE_IID(kCCheckButton, NS_CHECKBUTTON_CID);
static NS_DEFINE_IID(kCCombobox, NS_COMBOBOX_CID);
static NS_DEFINE_IID(kCFileOpen, NS_FILEWIDGET_CID);
static NS_DEFINE_IID(kCListbox, NS_LISTBOX_CID);
static NS_DEFINE_IID(kCRadioButton, NS_RADIOBUTTON_CID);
static NS_DEFINE_IID(kCHorzScrollbar, NS_HORZSCROLLBAR_CID);
static NS_DEFINE_IID(kCVertScrollbar, NS_VERTSCROLLBAR_CID);
static NS_DEFINE_IID(kCTextArea, NS_TEXTAREA_CID);
static NS_DEFINE_IID(kCTextField, NS_TEXTFIELD_CID);
static NS_DEFINE_IID(kCTabWidget, NS_TABWIDGET_CID);
static NS_DEFINE_IID(kCTooltipWidget, NS_TOOLTIPWIDGET_CID);
static NS_DEFINE_IID(kCAppShell, NS_APPSHELL_CID);
static NS_DEFINE_IID(kCToolkit, NS_TOOLKIT_CID);
static NS_DEFINE_IID(kCLookAndFeel, NS_LOOKANDFEEL_CID);
static NS_DEFINE_IID(kCLabel, NS_LABEL_CID);
static NS_DEFINE_IID(kCMenuBar, NS_MENUBAR_CID);
static NS_DEFINE_IID(kCMenu, NS_MENU_CID);
static NS_DEFINE_IID(kCMenuItem, NS_MENUITEM_CID);
static NS_DEFINE_IID(kCImageButton, NS_IMAGEBUTTON_CID);
static NS_DEFINE_IID(kCPopUpMenu, NS_POPUPMENU_CID);
static NS_DEFINE_IID(kCMenuButton, NS_MENUBUTTON_CID);
// Drag & Drop, Clipboard
static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID);
static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_IID(kCXIFFormatConverter, NS_XIFFORMATCONVERTER_CID);
//static NS_DEFINE_IID(kCDragService, NS_DRAGSERVICE_CID);
//static NS_DEFINE_IID(kCFileListTransferable, NS_FILELISTTRANSFERABLE_CID);
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
static NS_DEFINE_CID(kCSound, NS_SOUND_CID);
static NS_DEFINE_CID(kCFileSpecWithUI, NS_FILESPECWITHUI_CID);
class nsWidgetFactory : public nsIFactory
{
public:
// nsISupports methods
NS_DECL_ISUPPORTS
// nsIFactory methods
NS_IMETHOD CreateInstance(nsISupports *aOuter,
const nsIID &aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
nsWidgetFactory(const nsCID &aClass);
~nsWidgetFactory();
private:
nsCID mClassID;
};
NS_IMPL_ADDREF(nsWidgetFactory)
NS_IMPL_RELEASE(nsWidgetFactory)
nsWidgetFactory::nsWidgetFactory(const nsCID &aClass)
{
NS_INIT_REFCNT();
mClassID = aClass;
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::nsWidgetFactory Constructor Called\n"));
}
nsWidgetFactory::~nsWidgetFactory()
{
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::~nsWidgetFactory Destructor Called\n"));
NS_ASSERTION(mRefCnt == 0, "Reference count not zero in destructor");
}
nsresult nsWidgetFactory::QueryInterface(const nsIID &aIID,
void **aResult)
{
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::QueryInterface mRefCnt=<%d>\n", mRefCnt));
if (NULL == aResult) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *)(nsISupports *)this;
} else if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *)(nsIFactory *)this;
}
if (*aResult == NULL) {
return NS_NOINTERFACE;
}
NS_ADDREF_THIS();
return NS_OK;
}
nsresult nsWidgetFactory::CreateInstance( nsISupports *aOuter,
const nsIID &aIID,
void **aResult)
{
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance 1 mRefCnt=<%d>\n", mRefCnt));
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (nsnull != aOuter)
return NS_ERROR_NO_AGGREGATION;
nsISupports *inst = nsnull;
if (mClassID.Equals(kCWindow)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of nsWindow\n"));
inst = (nsISupports *)new nsWindow();
}
else if (mClassID.Equals(kCChild)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of nsChildWindow\n"));
inst = (nsISupports *)new ChildWindow();
}
else if (mClassID.Equals(kCButton)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsButton\n" ));
inst = (nsISupports *)(nsWidget *)new nsButton();
}
else if (mClassID.Equals(kCTextField)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of TextField\n"));
inst = (nsISupports *) (nsWidget *) new nsTextWidget();
}
else if (mClassID.Equals(kCHorzScrollbar)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of HorzScrollBar\n" ));
inst = (nsISupports *) (nsWidget *) new nsScrollbar( PR_FALSE );
}
else if (mClassID.Equals(kCVertScrollbar)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of VertScrollBar\n" ));
inst = (nsISupports *) (nsWidget *) new nsScrollbar( PR_TRUE );
}
else if (mClassID.Equals(kCCheckButton)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsCheckButton\n" ));
inst = (nsISupports *)(nsWidget *)new nsCheckButton();
}
else if (mClassID.Equals(kCRadioButton)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsRadioButton\n" ));
inst = (nsISupports *)(nsWidget *)new nsRadioButton();
}
else if (mClassID.Equals(kCTextArea)) {
inst = (nsISupports *) (nsWidget *) new nsTextAreaWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of TextArea\n" ));
}
else if (mClassID.Equals(kCListbox)) {
inst = (nsISupports *) (nsWidget *) new nsListBox();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsListBox\n" ));
}
else if (mClassID.Equals(kCFileOpen)) {
inst = (nsISupports *) new nsFileWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsFileWidget\n" ));
}
else if (mClassID.Equals(kCCombobox)) {
inst = (nsISupports *) (nsWidget *) new nsComboBox();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsComboBox\n" ));
}
else if (mClassID.Equals(kCSound)) {
nsISound* aSound = nsnull;
NS_NewSound(&aSound);
inst = (nsISupports*) aSound;
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsSound\n" ));
}
#if 1
/* Widget we don't support */
else if (mClassID.Equals(kCTabWidget)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of TabWidget\n" ));
}
else if (mClassID.Equals(kCTooltipWidget)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of ToolTip\n" ));
}
else if (mClassID.Equals(kCPopUpMenu)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of PopUpMenu\n" ));
}
#endif
else if (mClassID.Equals(kCAppShell)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsAppShell\n" ));
inst = (nsISupports*)new nsAppShell();
}
else if (mClassID.Equals(kCToolkit)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsToolkit\n" ));
inst = (nsISupports*)new nsToolkit();
}
else if (mClassID.Equals(kCLookAndFeel)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsLookAndFeel\n" ));
inst = (nsISupports*)new nsLookAndFeel();
}
else if (mClassID.Equals(kCMenuBar)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsMenuBar\n" ));
inst = (nsISupports*)(nsIMenuBar *)new nsMenuBar();
}
else if (mClassID.Equals(kCMenu)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsMenu\n" ));
inst = (nsISupports*)(nsIMenu *)new nsMenu();
}
else if (mClassID.Equals(kCMenuItem)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsMenuItem\n" ));
inst = (nsISupports*)(nsIMenuItem *)new nsMenuItem();
}
else if (mClassID.Equals(kCLabel)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsLabel\n" ));
inst = (nsISupports*)(nsILabel *)new nsLabel();
}
else if (mClassID.Equals(kCClipboard)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of nsClipboard\n"));
inst = (nsISupports*)(nsBaseClipboard *)new nsClipboard();
}
else if (mClassID.Equals(kCXIFFormatConverter)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsXIFFormatConverter\n" ));
inst = (nsISupports*)new nsXIFFormatConverter();
}
else if (mClassID.Equals(kCFileSpecWithUI))
{
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsFileSpecWithUIImpl\n" ));
inst = (nsISupports*) (nsIFileSpecWithUI *) new nsFileSpecWithUIImpl;
}
else if (mClassID.Equals(kCTransferable)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsTransferable\n" ));
inst = (nsISupports*)new nsTransferable();
}
if (inst == NULL) {
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance Failed to create widget.\n" ));
return NS_ERROR_OUT_OF_MEMORY;
}
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance 2 mRefCnt=<%d>\n", mRefCnt));
nsresult res = inst->QueryInterface(aIID, aResult);
if (res != NS_OK) {
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance query interface barfed.\n" ));
// We didn't get the right interface, so clean up
delete inst;
}
return res;
}
nsresult nsWidgetFactory::LockFactory(PRBool aLock)
{
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::Lock Factory mRefCnt=<%d> - Not Implemented\n", mRefCnt));
// Not implemented in simplest case.
return NS_OK;
}
// return the proper factory to the caller
extern "C" NS_WIDGET nsresult
NSGetFactory(nsISupports* serviceMgr,
const nsCID &aClass,
const char *aClassName,
const char *aProgID,
nsIFactory **aFactory)
{
if (nsnull == aFactory) {
return NS_ERROR_NULL_POINTER;
}
*aFactory = new nsWidgetFactory(aClass);
if (nsnull == aFactory) {
return NS_ERROR_OUT_OF_MEMORY;
}
return (*aFactory)->QueryInterface(kIFactoryIID, (void**)aFactory);
}

Просмотреть файл

@ -38,33 +38,34 @@ INCLUDES+= -I$(srcdir)/../xpwidgets -I$(srcdir)/../gtk -I$(srcdir)/.
INCLUDES += $(TK_CFLAGS)
CPPSRCS= \
nsFontRetrieverService.cpp \
nsFontSizeIterator.cpp \
nsAppShell.cpp \
nsButton.cpp \
nsCheckButton.cpp \
nsClipboard.cpp \
nsComboBox.cpp \
nsDragService.cpp \
nsFileWidget.cpp \
nsFontRetrieverService.cpp \
nsFontSizeIterator.cpp \
nsGtkEventHandler.cpp \
nsLabel.cpp \
nsScrollbar.cpp \
nsButton.cpp \
nsListBox.cpp \
nsLookAndFeel.cpp \
nsTextAreaWidget.cpp \
nsCheckButton.cpp \
nsMenu.cpp \
nsTextHelper.cpp \
nsMenuBar.cpp \
nsTextWidget.cpp \
nsFileWidget.cpp \
nsMenuItem.cpp \
nsTabWidget.cpp \
nsToolkit.cpp \
nsGtkEventHandler.cpp \
nsRadioButton.cpp \
nsPopUpMenu.cpp \
nsWidget.cpp \
nsWindow.cpp \
nsRadioButton.cpp \
nsScrollbar.cpp \
nsSound.cpp \
nsTabWidget.cpp \
nsTextAreaWidget.cpp \
nsTextHelper.cpp \
nsTextWidget.cpp \
nsToolkit.cpp \
nsWidget.cpp \
nsWidgetFactory.cpp \
nsWindow.cpp \
$(NULL)
TARGETS = $(LIBRARY)

Просмотреть файл

@ -38,51 +38,30 @@ INCLUDES+= -I$(srcdir)/../xpwidgets -I$(srcdir)/../motif -I$(srcdir)/.
INCLUDES += $(TK_CFLAGS)
CPPSRCS= \
nsMenuBar.cpp \
nsAppShell.cpp \
nsButton.cpp \
nsCheckButton.cpp \
nsComboBox.cpp \
nsFileWidget.cpp \
nsLabel.cpp \
nsListBox.cpp \
nsLookAndFeel.cpp \
nsMenu.cpp \
nsMenuBar.cpp \
nsMenuItem.cpp \
nsPopUpMenu.cpp \
nsComboBox.cpp \
nsTextHelper.cpp \
nsTextAreaWidget.cpp \
nsTextWidget.cpp \
nsListBox.cpp \
nsRadioButton.cpp \
nsFileWidget.cpp \
nsCheckButton.cpp \
nsScrollbar.cpp \
nsButton.cpp \
nsAppShell.cpp \
nsLookAndFeel.cpp \
nsTextAreaWidget.cpp \
nsTextHelper.cpp \
nsTextWidget.cpp \
nsToolkit.cpp \
nsLabel.cpp \
nsWidgetFactory.cpp \
nsWindow.cpp \
nsXtEventHandler.cpp \
nsXtManageWidget.cpp \
$(NULL)
CPP_OBJS= \
./$(OBJDIR)/nsPopUpMenu.o \
./$(OBJDIR)/nsComboBox.o \
./$(OBJDIR)/nsFileWidget.o \
./$(OBJDIR)/nsTextHelper.o \
./$(OBJDIR)/nsTextAreaWidget.o \
./$(OBJDIR)/nsTextWidget.o \
./$(OBJDIR)/nsListBox.o \
./$(OBJDIR)/nsRadioButton.o \
./$(OBJDIR)/nsFileWidget.o \
./$(OBJDIR)/nsCheckButton.o \
./$(OBJDIR)/nsScrollbar.o \
./$(OBJDIR)/nsButton.o \
./$(OBJDIR)/nsScrollbar.o \
./$(OBJDIR)/nsAppShell.o \
./$(OBJDIR)/nsLookAndFeel.o \
./$(OBJDIR)/nsToolkit.o \
./$(OBJDIR)/nsLabel.o \
./$(OBJDIR)/nsWindow.o \
./$(OBJDIR)/nsXtEventHandler.o \
$(NULL)
TARGETS = $(LIBRARY)
MKSHLIB :=

Просмотреть файл

@ -43,38 +43,40 @@ DIRS += tests
endif
CPPSRCS = \
nsToolkit.cpp \
nsAppShell.cpp \
nsLookAndFeel.cpp \
nsWindow.cpp \
nsCanvas.cpp \
nsFrameWindow.cpp \
nsScrollbar.cpp \
nsEntryField.cpp \
nsTextArea.cpp \
nsBaseList.cpp \
nsCanvas.cpp \
nsCheckbutton.cpp \
nsClipboard.cpp \
nsCombobox.cpp \
nsListbox.cpp \
nsTooltipWidget.cpp \
nsContextMenu.cpp \
nsDirPicker.cpp \
nsDragService.cpp \
nsEntryField.cpp \
nsFSTree.cpp \
nsFileDialog.cpp \
nsTooltipManager.cpp \
nsFontServices.cpp \
nsFrameWindow.cpp \
nsLabel.cpp \
nsListbox.cpp \
nsLookAndFeel.cpp \
nsMenu.cpp \
nsMenuBase.cpp \
nsMenuItem.cpp \
nsMenubar.cpp \
nsModule.cpp \
nsPushbutton.cpp \
nsRadiobutton.cpp \
nsCheckbutton.cpp \
nsMenuBase.cpp \
nsMenubar.cpp \
nsMenu.cpp \
nsMenuItem.cpp \
nsScrollbar.cpp \
nsSound.cpp \
nsTabWidget.cpp \
nsModule.cpp \
nsFontServices.cpp \
nsFSTree.cpp \
nsDirPicker.cpp \
nsContextMenu.cpp \
nsClipboard.cpp \
nsDragService.cpp \
nsSound.cpp
nsTextArea.cpp \
nsToolkit.cpp \
nsTooltipManager.cpp \
nsTooltipWidget.cpp \
nsWidgetFactory.cpp \
nsWindow.cpp \
$(NULL)
CSRCS = tabctrl.c

Просмотреть файл

@ -44,26 +44,28 @@ CPPSRCS= \
PtRawDrawContainer.cpp \
nsAppShell.cpp \
nsButton.cpp \
nsLabel.cpp \
nsCheckButton.cpp \
nsRadioButton.cpp \
nsClipboard.cpp \
nsComboBox.cpp \
nsFileWidget.cpp \
nsLabel.cpp \
nsListBox.cpp \
nsLookAndFeel.cpp \
nsToolkit.cpp \
nsMenu.cpp \
nsMenuBar.cpp \
nsMenuItem.cpp \
nsMenu.cpp \
nsPopUpMenu.cpp \
nsWidget.cpp \
nsRadioButton.cpp \
nsScrollbar.cpp \
nsSound.cpp \
nsTextAreaWidget.cpp \
nsTextHelper.cpp \
nsTextWidget.cpp \
nsTextAreaWidget.cpp \
nsListBox.cpp \
nsFileWidget.cpp \
nsComboBox.cpp \
nsClipboard.cpp \
nsSound.cpp \
nsWindow.cpp
nsToolkit.cpp \
nsWidget.cpp \
nsWidgetFactory.cpp \
nsWindow.cpp \
$(NULL)
TARGETS = $(LIBRARY)

Просмотреть файл

@ -16,235 +16,308 @@
* Reserved.
*/
/* Interface Headers */
#include "nsIFactory.h"
#include "nsISupports.h"
#include "nsIButton.h"
#include "nsILabel.h"
#include "nsICheckButton.h"
#include "nsIRadioButton.h"
#include "nsITextWidget.h"
#include "nsITextAreaWidget.h"
#include "nsIListBox.h"
#include "nsIFileWidget.h"
#include "nsFileSpecWithUIImpl.h"
#include "nsIComboBox.h"
#include "nsISound.h"
#include "nsWidgetsCID.h"
//#include "nsButton.h"
//#include "nsCheckButton.h"
//#include "nsComboBox.h"
//#include "nsFileWidget.h"
//#include "nsListBox.h"
#include "nsLookAndFeel.h"
//#include "nsRadioButton.h"
//#include "nsScrollbar.h"
//#include "nsTextAreaWidget.h"
//#include "nsTextHelper.h"
//#include "nsTextWidget.h"
/* Implmentation Headers */
#include "nsToolkit.h"
//#include "nsTabWidget.h"
//#include "nsTooltipWidget.h"
#include "nsWindow.h"
//#include "nsLabel.h"
//#include "nsMenuBar.h"
//#include "nsMenu.h"
//#include "nsMenuItem.h"
//#include "nsPopUpMenu.h"
//#include "nsImageButton.h"
//#include "nsMenuButton.h"
#include "nsAppShell.h"
#include "nsLookAndFeel.h"
#include "nsButton.h"
#include "nsCheckButton.h"
#include "nsRadioButton.h"
#include "nsMenuBar.h"
#include "nsMenu.h"
#include "nsMenuItem.h"
#include "nsTextWidget.h"
#include "nsTextAreaWidget.h"
#include "nsScrollbar.h"
#include "nsListBox.h"
#include "nsFileWidget.h"
#include "nsComboBox.h"
#include "nsLabel.h"
#include "nsClipboard.h"
#include "nsTransferable.h"
#include "nsXIFFormatConverter.h"
#include "nsPhWidgetLog.h"
static NS_DEFINE_IID(kCWindow, NS_WINDOW_CID);
static NS_DEFINE_IID(kCChild, NS_CHILD_CID);
//static NS_DEFINE_IID(kCButton, NS_BUTTON_CID);
//static NS_DEFINE_IID(kCCheckButton, NS_CHECKBUTTON_CID);
//static NS_DEFINE_IID(kCCombobox, NS_COMBOBOX_CID);
//static NS_DEFINE_IID(kCFileOpen, NS_FILEWIDGET_CID);
//static NS_DEFINE_IID(kCListbox, NS_LISTBOX_CID);
//static NS_DEFINE_IID(kCRadioButton, NS_RADIOBUTTON_CID);
//static NS_DEFINE_IID(kCHorzScrollbar, NS_HORZSCROLLBAR_CID);
//static NS_DEFINE_IID(kCVertScrollbar, NS_VERTSCROLLBAR_CID);
//static NS_DEFINE_IID(kCTextArea, NS_TEXTAREA_CID);
//static NS_DEFINE_IID(kCTextField, NS_TEXTFIELD_CID);
//static NS_DEFINE_IID(kCTabWidget, NS_TABWIDGET_CID);
//static NS_DEFINE_IID(kCTooltipWidget, NS_TOOLTIPWIDGET_CID);
static NS_DEFINE_IID(kCButton, NS_BUTTON_CID);
static NS_DEFINE_IID(kCCheckButton, NS_CHECKBUTTON_CID);
static NS_DEFINE_IID(kCCombobox, NS_COMBOBOX_CID);
static NS_DEFINE_IID(kCFileOpen, NS_FILEWIDGET_CID);
static NS_DEFINE_IID(kCListbox, NS_LISTBOX_CID);
static NS_DEFINE_IID(kCRadioButton, NS_RADIOBUTTON_CID);
static NS_DEFINE_IID(kCHorzScrollbar, NS_HORZSCROLLBAR_CID);
static NS_DEFINE_IID(kCVertScrollbar, NS_VERTSCROLLBAR_CID);
static NS_DEFINE_IID(kCTextArea, NS_TEXTAREA_CID);
static NS_DEFINE_IID(kCTextField, NS_TEXTFIELD_CID);
static NS_DEFINE_IID(kCTabWidget, NS_TABWIDGET_CID);
static NS_DEFINE_IID(kCTooltipWidget, NS_TOOLTIPWIDGET_CID);
static NS_DEFINE_IID(kCAppShell, NS_APPSHELL_CID);
static NS_DEFINE_IID(kCToolkit, NS_TOOLKIT_CID);
static NS_DEFINE_IID(kCLookAndFeel, NS_LOOKANDFEEL_CID);
//static NS_DEFINE_IID(kCLabel, NS_LABEL_CID);
//static NS_DEFINE_IID(kCMenuBar, NS_MENUBAR_CID);
//static NS_DEFINE_IID(kCMenu, NS_MENU_CID);
//static NS_DEFINE_IID(kCMenuItem, NS_MENUITEM_CID);
//static NS_DEFINE_IID(kCImageButton, NS_IMAGEBUTTON_CID);
//static NS_DEFINE_IID(kCPopUpMenu, NS_POPUPMENU_CID);
//static NS_DEFINE_IID(kCMenuButton, NS_MENUBUTTON_CID);
static NS_DEFINE_IID(kCLabel, NS_LABEL_CID);
static NS_DEFINE_IID(kCMenuBar, NS_MENUBAR_CID);
static NS_DEFINE_IID(kCMenu, NS_MENU_CID);
static NS_DEFINE_IID(kCMenuItem, NS_MENUITEM_CID);
static NS_DEFINE_IID(kCImageButton, NS_IMAGEBUTTON_CID);
static NS_DEFINE_IID(kCPopUpMenu, NS_POPUPMENU_CID);
static NS_DEFINE_IID(kCMenuButton, NS_MENUBUTTON_CID);
// Drag & Drop, Clipboard
static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID);
static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_IID(kCXIFFormatConverter, NS_XIFFORMATCONVERTER_CID);
//static NS_DEFINE_IID(kCDragService, NS_DRAGSERVICE_CID);
//static NS_DEFINE_IID(kCFileListTransferable, NS_FILELISTTRANSFERABLE_CID);
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
static NS_DEFINE_CID(kCSound, NS_SOUND_CID);
static NS_DEFINE_CID(kCFileSpecWithUI, NS_FILESPECWITHUI_CID);
class nsWidgetFactory : public nsIFactory
{
public:
// nsISupports methods
// nsISupports methods
NS_DECL_ISUPPORTS
// nsIFactory methods
NS_IMETHOD CreateInstance(nsISupports *aOuter,
const nsIID &aIID,
void **aResult);
const nsIID &aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
nsWidgetFactory(const nsCID &aClass);
~nsWidgetFactory();
private:
private:
nsCID mClassID;
};
};
NS_IMPL_ADDREF(nsWidgetFactory)
NS_IMPL_RELEASE(nsWidgetFactory)
nsWidgetFactory::nsWidgetFactory(const nsCID &aClass)
{
NS_INIT_REFCNT();
mClassID = aClass;
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::nsWidgetFactory Constructor Called\n"));
}
nsWidgetFactory::~nsWidgetFactory()
{
NS_ASSERTION(mRefCnt == 0, "Reference count not zero in destructor");
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::~nsWidgetFactory Destructor Called\n"));
NS_ASSERTION(mRefCnt == 0, "Reference count not zero in destructor");
}
nsresult nsWidgetFactory::QueryInterface(const nsIID &aIID,
void **aResult)
{
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::QueryInterface mRefCnt=<%d>\n", mRefCnt));
// Always NULL result, in case of failure
*aResult = NULL;
if (NULL == aResult) {
return NS_ERROR_NULL_POINTER;
}
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *)(nsISupports*)this;
} else if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *)(nsIFactory*)this;
}
*aResult = NULL;
if (*aResult == NULL) {
return NS_NOINTERFACE;
}
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *)(nsISupports *)this;
} else if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *)(nsIFactory *)this;
}
NS_ADDREF_THIS(); // Increase reference count for caller
return NS_OK;
if (*aResult == NULL) {
return NS_NOINTERFACE;
}
NS_ADDREF_THIS();
return NS_OK;
}
nsresult nsWidgetFactory::CreateInstance( nsISupports* aOuter,
nsresult nsWidgetFactory::CreateInstance( nsISupports *aOuter,
const nsIID &aIID,
void **aResult)
{
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance 1 mRefCnt=<%d>\n", mRefCnt));
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (nsnull != aOuter) {
return NS_ERROR_NO_AGGREGATION;
}
*aResult = NULL;
if (nsnull != aOuter)
return NS_ERROR_NO_AGGREGATION;
nsISupports *inst = nsnull;
if (mClassID.Equals(kCWindow)) {
inst = (nsISupports*)new nsWindow();
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of nsWindow\n"));
inst = (nsISupports *)new nsWindow();
}
else if (mClassID.Equals(kCChild)) {
inst = (nsISupports*)new ChildWindow();
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of nsChildWindow\n"));
inst = (nsISupports *)new ChildWindow();
}
/*
else if (mClassID.Equals(kCButton)) {
inst = (nsISupports*)(nsWindow*)new nsButton();
}
else if (mClassID.Equals(kCCheckButton)) {
inst = (nsISupports*)(nsWindow*)new nsCheckButton();
}
else if (mClassID.Equals(kCCombobox)) {
inst = (nsISupports*)(nsWindow*)new nsComboBox();
}
else if (mClassID.Equals(kCRadioButton)) {
inst = (nsISupports*)(nsWindow*)new nsRadioButton();
}
else if (mClassID.Equals(kCFileOpen)) {
inst = (nsISupports*)new nsFileWidget();
}
else if (mClassID.Equals(kCListbox)) {
inst = (nsISupports*)(nsWindow*)new nsListBox();
}
else if (mClassID.Equals(kCHorzScrollbar)) {
inst = (nsISupports*)(nsWindow*)new nsScrollbar(PR_FALSE);
}
else if (mClassID.Equals(kCVertScrollbar)) {
inst = (nsISupports*)(nsWindow*)new nsScrollbar(PR_TRUE);
}
else if (mClassID.Equals(kCTextArea)) {
inst = (nsISupports*)(nsWindow*)new nsTextAreaWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsButton\n" ));
inst = (nsISupports *)(nsWidget *)new nsButton();
}
else if (mClassID.Equals(kCTextField)) {
inst = (nsISupports*)(nsWindow*)new nsTextWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of TextField\n"));
inst = (nsISupports *) (nsWidget *) new nsTextWidget();
}
else if (mClassID.Equals(kCHorzScrollbar)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of HorzScrollBar\n" ));
inst = (nsISupports *) (nsWidget *) new nsScrollbar( PR_FALSE );
}
else if (mClassID.Equals(kCVertScrollbar)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of VertScrollBar\n" ));
inst = (nsISupports *) (nsWidget *) new nsScrollbar( PR_TRUE );
}
else if (mClassID.Equals(kCCheckButton)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsCheckButton\n" ));
inst = (nsISupports *)(nsWidget *)new nsCheckButton();
}
else if (mClassID.Equals(kCRadioButton)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsRadioButton\n" ));
inst = (nsISupports *)(nsWidget *)new nsRadioButton();
}
else if (mClassID.Equals(kCTextArea)) {
inst = (nsISupports *) (nsWidget *) new nsTextAreaWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of TextArea\n" ));
}
else if (mClassID.Equals(kCListbox)) {
inst = (nsISupports *) (nsWidget *) new nsListBox();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsListBox\n" ));
}
else if (mClassID.Equals(kCFileOpen)) {
inst = (nsISupports *) new nsFileWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsFileWidget\n" ));
}
else if (mClassID.Equals(kCCombobox)) {
inst = (nsISupports *) (nsWidget *) new nsComboBox();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsComboBox\n" ));
}
else if (mClassID.Equals(kCSound)) {
nsISound* aSound = nsnull;
NS_NewSound(&aSound);
inst = (nsISupports*) aSound;
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsSound\n" ));
}
#if 1
/* Widget we don't support */
else if (mClassID.Equals(kCTabWidget)) {
inst = (nsISupports*)(nsWindow*)new nsTabWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of TabWidget\n" ));
}
else if (mClassID.Equals(kCTooltipWidget)) {
inst = (nsISupports*)(nsWindow*)new nsTooltipWidget();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of ToolTip\n" ));
}
*/
else if (mClassID.Equals(kCPopUpMenu)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of PopUpMenu\n" ));
}
#endif
else if (mClassID.Equals(kCAppShell)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsAppShell\n" ));
inst = (nsISupports*)new nsAppShell();
}
else if (mClassID.Equals(kCToolkit)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsToolkit\n" ));
inst = (nsISupports*)new nsToolkit();
}
else if (mClassID.Equals(kCLookAndFeel)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsLookAndFeel\n" ));
inst = (nsISupports*)new nsLookAndFeel();
}
/*
else if (mClassID.Equals(kCLabel)) {
inst = (nsISupports*)(nsWindow*)new nsLabel();
}
else if (mClassID.Equals(kCMenuBar)) {
inst = (nsISupports*)(nsIMenuBar*) new nsMenuBar();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsMenuBar\n" ));
inst = (nsISupports*)(nsIMenuBar *)new nsMenuBar();
}
else if (mClassID.Equals(kCMenu)) {
inst = (nsISupports*)(nsIMenu*) new nsMenu();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsMenu\n" ));
inst = (nsISupports*)(nsIMenu *)new nsMenu();
}
else if (mClassID.Equals(kCMenuItem)) {
inst = (nsISupports*)(nsIMenuItem*) new nsMenuItem();
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsMenuItem\n" ));
inst = (nsISupports*)(nsIMenuItem *)new nsMenuItem();
}
else if (mClassID.Equals(kCImageButton)) {
inst = (nsISupports*)(nsWindow*)new nsImageButton();
else if (mClassID.Equals(kCLabel)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsLabel\n" ));
inst = (nsISupports*)(nsILabel *)new nsLabel();
}
else if (mClassID.Equals(kCMenuButton)) {
inst = (nsISupports*)(nsWindow*)new nsMenuButton();
else if (mClassID.Equals(kCClipboard)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidgetFactory::CreateInstance of nsClipboard\n"));
inst = (nsISupports*)(nsBaseClipboard *)new nsClipboard();
}
else if (mClassID.Equals(kCPopUpMenu)) {
inst = (nsISupports*)new nsPopUpMenu();
else if (mClassID.Equals(kCXIFFormatConverter)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsXIFFormatConverter\n" ));
inst = (nsISupports*)new nsXIFFormatConverter();
}
*/
else if (mClassID.Equals(kCFileSpecWithUI))
{
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsFileSpecWithUIImpl\n" ));
inst = (nsISupports*) (nsIFileSpecWithUI *) new nsFileSpecWithUIImpl;
}
else if (mClassID.Equals(kCTransferable)) {
PR_LOG(PhWidLog, PR_LOG_DEBUG,( "nsWidgetFactory::CreateInstance of nsTransferable\n" ));
inst = (nsISupports*)new nsTransferable();
}
if (inst == NULL) {
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance Failed to create widget.\n" ));
return NS_ERROR_OUT_OF_MEMORY;
}
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance 2 mRefCnt=<%d>\n", mRefCnt));
nsresult res = inst->QueryInterface(aIID, aResult);
if (res != NS_OK) {
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::CreateInstance query interface barfed.\n" ));
// We didn't get the right interface, so clean up
delete inst;
}
return res;
return res;
}
nsresult nsWidgetFactory::LockFactory(PRBool aLock)
{
// Not implemented in simplest case.
return NS_OK;
PR_LOG(PhWidLog, PR_LOG_ERROR,( "nsWidgetFactory::Lock Factory mRefCnt=<%d> - Not Implemented\n", mRefCnt));
// Not implemented in simplest case.
return NS_OK;
}
// return the proper factory to the caller
@ -255,19 +328,17 @@ NSGetFactory(nsISupports* serviceMgr,
const char *aProgID,
nsIFactory **aFactory)
{
if( nsnull == aFactory )
{
return NS_ERROR_NULL_POINTER;
}
if (nsnull == aFactory) {
return NS_ERROR_NULL_POINTER;
}
*aFactory = new nsWidgetFactory( aClass );
*aFactory = new nsWidgetFactory(aClass);
if( nsnull == aFactory )
{
return NS_ERROR_OUT_OF_MEMORY;
}
if (nsnull == aFactory) {
return NS_ERROR_OUT_OF_MEMORY;
}
return (*aFactory)->QueryInterface(kIFactoryIID, (void**)aFactory);
return (*aFactory)->QueryInterface(kIFactoryIID, (void**)aFactory);
}