Mozilla/mozilla/cmd/xfe/src/NavCenterView.cpp
ramiro 0678c47f1a Documentation fixes. Cleanups for dead/changed file/class names.
No code changes, only comments.  Makes the xfe LXR pages better.
Approved by don.
Thanks do Dawn Endico <dawn@cannibal.mi.org> for providing the patch.


git-svn-id: svn://10.0.0.236/trunk@5087 18797224-902f-48f8-a5cc-f745e15eee43
1998-07-07 06:15:49 +00:00

298 lines
8.8 KiB
C++

/* -*- 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.
*/
/*
NavCenterView.cpp - Aurora/NavCenter view class
Created: Stephen Lamm <slamm@netscape.com>, 05-Nov-97.
*/
#include "NavCenterView.h"
#include "HTMLView.h"
#include "RDFView.h"
#include "IconGroup.h"
#include <Xfe/XfeAll.h>
#if DEBUG_slamm
#define D(x) x
#else
#define D(x)
#endif
typedef struct _SelectorCBStruct {
XFE_NavCenterView *ncview;
HT_View view;
} SelectorCBStruct;
XFE_NavCenterView::XFE_NavCenterView(XFE_Component *toplevel_component,
Widget parent, XFE_View *parent_view,
MWContext *context)
: XFE_View(toplevel_component, parent_view, context)
{
D(printf("XFE_NavCenterView Constructor\n"););
// This may need to become a constructor argument,
// but this is good enough for now.
m_isStandalone = (parent_view == NULL);
Widget nav_form = XtVaCreateManagedWidget("nav_form",
xmFormWidgetClass,
parent,
NULL);
setBaseWidget(nav_form);
m_selector = XtVaCreateManagedWidget("selector",
xfeToolScrollWidgetClass,
nav_form,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
XmNtopOffset, 0,
XmNbottomOffset, 0,
XmNleftOffset, 0,
XmNrightOffset, 0,
XmNspacing, 0,
XmNshadowThickness, 0,
NULL);
Widget toolbar;
XtVaGetValues(m_selector,XmNtoolBar,&toolbar,NULL);
XtVaSetValues(toolbar,
XmNshadowThickness, 0,
NULL);
Widget rdf_parent = XtVaCreateManagedWidget("rdf_form",
xmFormWidgetClass,
nav_form,
XmNtopAttachment, XmATTACH_FORM,
#ifdef HTML_PANE
XmNbottomAttachment, XmATTACH_NONE,
#else
XmNbottomAttachment, XmATTACH_FORM,
#endif
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, m_selector,
XmNrightAttachment, XmATTACH_FORM,
XmNtopOffset, 0,
XmNbottomOffset, 1,
XmNleftOffset, 0,
XmNrightOffset, 0,
XmNshadowThickness, 2,
XmNshadowType, XmSHADOW_IN,
NULL);
#ifdef HTML_PANE
m_htmlview = new XFE_HTMLView(this, nav_form, NULL, context);
Widget html_base = m_htmlview->getBaseWidget();
XtVaSetValues(html_base,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, rdf_parent,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, m_selector,
XmNrightAttachment, XmATTACH_FORM,
NULL);
#endif
m_htview = NULL;
m_pane = NULL;
m_rdfview = new XFE_RDFView(this, rdf_parent, this,
context, m_isStandalone);
HT_Notification ns = new HT_NotificationStruct;
ns->notifyProc = notify_cb;
ns->data = this;
m_pane = HT_NewPane(ns);
HT_SetPaneFEData(m_pane, this);
// add our subviews to the list of subviews for command dispatching and
// deletion.
addView(m_rdfview);
#ifdef HTML_PANE
addView(m_htmlview);
#endif
XtManageChild(m_selector);
m_rdfview->show();
#ifdef HTML_PANE
m_htmlview->show();
m_htmlview->getURL(NET_CreateURLStruct("http://dunk/",NET_DONT_RELOAD));
#endif
XtManageChild(nav_form);
}
XFE_NavCenterView::~XFE_NavCenterView()
{
D(printf("XFE_NavCenterView DESTRUCTING\n"););
if (m_pane)
HT_DeletePane(m_pane);
}
//////////////////////////////////////////////////////////////////////////
void notify_cb(HT_Notification ns, HT_Resource n,
HT_Event whatHappened)
{
XFE_NavCenterView* theView = (XFE_NavCenterView*)ns->data;
theView->notify(ns, n, whatHappened);
}
void
XFE_NavCenterView::notify(HT_Notification ns, HT_Resource n,
HT_Event whatHappened)
{
switch (whatHappened) {
case HT_EVENT_VIEW_CLOSED:
D(printf("HT_Event: %s on %s\n","HT_EVENT_VIEW_CLOSED",
HT_GetNodeName(n)););
break;
case HT_EVENT_VIEW_SELECTED:
{
D(printf("HT_Event: %s on %s\n","HT_EVENT_VIEW_SELECTED",
HT_GetNodeName(n)););
HT_View view = HT_GetView(n);
if (m_htview != view)
setRDFView(view);
}
break;
case HT_EVENT_VIEW_ADDED:
{
D(printf("HT_Event: %s on %s\n","HT_EVENT_VIEW_ADDED",
HT_GetNodeName(n)););
HT_View view = HT_GetView(n);
addRDFView(view);
return;
}
break;
case HT_EVENT_NODE_ADDED:
case HT_EVENT_NODE_DELETED_DATA:
case HT_EVENT_NODE_DELETED_NODATA:
case HT_EVENT_NODE_VPROP_CHANGED:
case HT_EVENT_NODE_SELECTION_CHANGED:
case HT_EVENT_NODE_OPENCLOSE_CHANGED:
case HT_EVENT_NODE_OPENCLOSE_CHANGING:
break;
default:
D(printf("HT_Event(%d): Unknown type on %s\n",whatHappened,HT_GetNodeName(n)););
break;
}
// Pass through to the outliner
// xxxShould check to make sure that it applies to rdfview's view.
m_rdfview->notify(ns,n,whatHappened);
}
//////////////////////////////////////////////////////////////////////
void
XFE_NavCenterView::setRDFView(HT_View view)
{
Widget toolbar;
// WidgetList tool_items = NULL;
XtVaGetValues(m_selector,XmNtoolBar,&toolbar,NULL);
//XfeToolBarSetSelectedButton(toolbar, xxx);
HT_SetSelectedView(m_pane, view);
m_htview = view;
}
//////////////////////////////////////////////////////////////////////
void
XFE_NavCenterView::addRDFView(HT_View view)
{
XP_ASSERT(view);
if (!view) return;
Widget toolbar;
// WidgetList tool_items = NULL;
XtVaGetValues(m_selector,XmNtoolBar,&toolbar,NULL);
char *label = HT_GetViewName(view);
char *icon_url = HT_GetWorkspaceLargeIconURL(view);
char name[8];
int ret = sscanf(icon_url, "icon/large:workspace,%s", name);
if (ret != 0) {
icon_url = XP_Cat("about:",name,".gif",NULL);
// Load the icon here.
// copy windows(navcntr.cpp)? call IL_GetImage? or IL_GetImagePixmap?
XP_FREE(icon_url);
}
uint32 index = HT_GetViewIndex(view);
char widget_name[128];
sprintf(widget_name,"button%d", index);
Widget button =
XtVaCreateManagedWidget(widget_name,
xfeButtonWidgetClass,
toolbar,
XmNlabelAlignment, XmALIGNMENT_BEGINNING,
NULL);
// Temp bookmark title hack
if (XP_STRNCMP(label,"Bookmarks for", 13) == 0) {
label = "Bookmarks";
}
XfeSetXmStringPSZ(button, XmNlabelString,
XmFONTLIST_DEFAULT_TAG, label);
SelectorCBStruct *cbdata = new SelectorCBStruct;
cbdata->ncview = this;
cbdata->view = view;
XtAddCallback(button,
XmNactivateCallback,
&XFE_NavCenterView::selector_activate_cb,
(XtPointer) cbdata);
XtAddCallback(button,
XmNdestroyCallback,
&XFE_NavCenterView::selector_destroy_cb,
(XtPointer) cbdata);
}
//////////////////////////////////////////////////////////////////////
void
XFE_NavCenterView::selector_activate_cb(Widget w,
XtPointer clientData,
XtPointer callData)
{
SelectorCBStruct *cbdata = (SelectorCBStruct *)clientData;
cbdata->ncview->setRDFView(cbdata->view);
}
//////////////////////////////////////////////////////////////////////
void
XFE_NavCenterView::selector_destroy_cb(Widget w,
XtPointer clientData,
XtPointer callData)
{
SelectorCBStruct *cbdata = (SelectorCBStruct *)clientData;
delete cbdata;
}