This commit is contained in:
ramiro%netscape.com 1998-10-14 05:40:35 +00:00
Родитель 27854ebda6
Коммит e5ca3992fa
2 изменённых файлов: 316 добавлений и 0 удалений

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

@ -0,0 +1,218 @@
/* -*- 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.
*/
//////////////////////////////////////////////////////////////////////////
// //
// Name: ToolbarNavigation.cpp //
// //
// Description: XFE_ToolbarNavigation class implementation. //
// The Back/Forward toolbar buttons. //
// //
// Author: Ramiro Estrugo <ramiro@netscape.com> //
// //
//////////////////////////////////////////////////////////////////////////
#include "ToolbarNavigation.h"
#include "RDFUtils.h"
#include "BackForwardMenu.h"
#include <Xfe/Cascade.h>
#include "prefapi.h"
#include "xpgetstr.h" // for XP_GetString()
extern int XFE_UNTITLED;
//////////////////////////////////////////////////////////////////////////
XFE_ToolbarNavigation::XFE_ToolbarNavigation(XFE_Frame * frame,
Widget parent,
HT_Resource htResource,
const String name,
int forward) :
XFE_ToolbarButton(frame,parent,htResource,name),
m_submenu(NULL),
m_forward(forward)
{
}
//////////////////////////////////////////////////////////////////////////
XFE_ToolbarNavigation::~XFE_ToolbarNavigation()
{
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//
// Initialize
//
//////////////////////////////////////////////////////////////////////////
/* virtual */ void
XFE_ToolbarNavigation::initialize()
{
Widget navigation = createBaseWidget(getParent(),getName());
setBaseWidget(navigation);
XtVaGetValues(navigation,XmNsubMenuId,&m_submenu,NULL);
XP_ASSERT( XfeIsAlive(m_submenu) );
XFE_BackForwardMenu::generate(m_widget,
(XtPointer) m_forward,
getAncestorFrame());
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//
// Accessors
//
//////////////////////////////////////////////////////////////////////////
Widget
XFE_ToolbarNavigation::getSubmenu()
{
return m_submenu;
}
//////////////////////////////////////////////////////////////////////////
int
XFE_ToolbarNavigation::getForward()
{
return m_forward;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//
// Widget creation interface
//
//////////////////////////////////////////////////////////////////////////
/* virtual */ Widget
XFE_ToolbarNavigation::createBaseWidget(Widget parent,
const String name)
{
XP_ASSERT( XfeIsAlive(parent) );
XP_ASSERT( name != NULL );
Widget navigation;
navigation = XtVaCreateWidget(name,
xfeCascadeWidgetClass,
parent,
NULL);
return navigation;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//
// ToolTip interface
//
//////////////////////////////////////////////////////////////////////////
/* virtual */ void
XFE_ToolbarNavigation::tipStringObtain(XmString * stringReturn,
Boolean * needToFreeString)
{
entryStringObtain(stringReturn,needToFreeString);
if (*stringReturn == NULL)
{
XFE_ToolbarItem::tipStringObtain(stringReturn,needToFreeString);
}
}
//////////////////////////////////////////////////////////////////////////
/* virtual */ void
XFE_ToolbarNavigation::docStringObtain(XmString * stringReturn,
Boolean * needToFreeString)
{
entryStringObtain(stringReturn,needToFreeString);
if (*stringReturn == NULL)
{
XFE_ToolbarItem::docStringObtain(stringReturn,needToFreeString);
}
}
//////////////////////////////////////////////////////////////////////////
/* virtual */ void
XFE_ToolbarNavigation::entryStringObtain(XmString * stringReturn,
Boolean * needToFreeString)
{
MWContext * context = getAncestorContext();
XP_ASSERT( context != NULL );
// Get the session history list
XP_List* list = SHIST_GetList(context);
XP_ASSERT( list != NULL );
if (list != NULL)
{
// Get the pointer to the current history entry
History_entry * current_entry = context->hist.cur_doc_ptr;
XP_List * current = XP_ListFindObject(list, current_entry);
if (current != NULL)
{
// Find the target node
XP_List * target = m_forward ? current->next : current->prev;
if (target != NULL)
{
// Find the target entry
History_entry * entry =
(History_entry *) (target ? target->object : NULL);
// Determine the label
char * label = NULL;
if (entry != NULL)
{
if (entry->title != NULL)
{
label = entry->title;
}
else if (entry->address != NULL)
{
label = entry->address;
}
else
{
label = XP_GetString(XFE_UNTITLED);
}
}
if (label != NULL)
{
*stringReturn = XmStringCreateLtoR(label,
XmFONTLIST_DEFAULT_TAG);
*needToFreeString = True;
return;
}
} // (target != NULL)
} // (current != NULL)
} // (list != NULL)
*stringReturn = NULL;
*needToFreeString = False;
}
//////////////////////////////////////////////////////////////////////////

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

@ -0,0 +1,98 @@
/* -*- 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.
*/
//////////////////////////////////////////////////////////////////////////
// //
// Name: ToolbarNavigation.h //
// //
// Description: XFE_ToolbarNavigation class header. //
// The Back/Forward toolbar buttons. //
// //
// Author: Ramiro Estrugo <ramiro@netscape.com> //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef _xfe_toolbar_navigation_h_
#define _xfe_toolbar_navigation_h_
#include "ToolbarButton.h"
class XFE_ToolbarNavigation : public XFE_ToolbarButton
{
public:
XFE_ToolbarNavigation(XFE_Frame * frame,
Widget parent,
HT_Resource htResource,
const String name,
int forward);
virtual ~XFE_ToolbarNavigation();
//////////////////////////////////////////////////////////////////////
// //
// Accessors //
// //
//////////////////////////////////////////////////////////////////////
Widget getSubmenu();
int getForward();
//////////////////////////////////////////////////////////////////////
// //
// Initialize //
// //
//////////////////////////////////////////////////////////////////////
virtual void initialize ();
protected:
//////////////////////////////////////////////////////////////////////
// //
// Widget creation interface //
// //
//////////////////////////////////////////////////////////////////////
virtual Widget createBaseWidget (Widget parent,
const String name);
//////////////////////////////////////////////////////////////////////
// //
// ToolTip interface //
// //
//////////////////////////////////////////////////////////////////////
virtual void tipStringObtain (XmString * stringReturn,
Boolean * needToFreeString);
virtual void docStringObtain (XmString * stringReturn,
Boolean * needToFreeString);
virtual void entryStringObtain (XmString * stringReturn,
Boolean * needToFreeString);
private:
//////////////////////////////////////////////////////////////////////
// //
// Private data //
// //
//////////////////////////////////////////////////////////////////////
Widget m_submenu;
XP_Bool m_forward;
};
#endif // _xfe_toolbar_navigation_h_