/* -*- 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.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ /* PropertySheetView.cpp -- class definition for XFE_PropertySheetView Created: Tao Cheng , 12-nov-96 */ #include "PropertySheetView.h" #include "PropertyTabView.h" #include XFE_PropertySheetView::XFE_PropertySheetView(XFE_Component *top, Widget parent, /* the dialog */ int *tabNameId, int nTabs): XFE_MNView(top, NULL, NULL, NULL) { /* 1. Create the folder */ Widget folder = XtCreateWidget("xmlFolder", xmlFolderWidgetClass, parent, NULL, 0); XtAddCallback(folder, XmNactivateCallback, XFE_PropertySheetView::tabActivateCB, this); /* set base widget */ setBaseWidget(folder); /* 2. Create tab view */ if (tabNameId) for (int i=0; i < nTabs; i++) { XFE_PropertyTabView *tab = new XFE_PropertyTabView(top, this, tabNameId[i]); addView(tab); tab->show(); }/* for i */ #if defined(DEBUG_tao_) else { printf("\n Warning: [XFE_PropertySheetView::XFE_PropertySheetView]tabNameId is NULL!!"); }/* else */ #endif /* set pos 0 as the default active tab */ tabActivate(0); } XFE_PropertySheetView::~XFE_PropertySheetView() { } void XFE_PropertySheetView::tabActivate(int pos) { getDlgValues(); /* set active view */ if (m_subviews && m_subviews[pos]) { /* if need to handle ex-active tab */ /* reset activeTab */ m_activeTab = (XFE_PropertyTabView *)m_subviews[pos]; m_activeTab->setDlgValues(); }/* if */ } void XFE_PropertySheetView::tabActivateCB(Widget /*w*/, XtPointer clientData, XtPointer callData) { XFE_PropertySheetView *obj = (XFE_PropertySheetView *)clientData; XmLFolderCallbackStruct *cbs = (XmLFolderCallbackStruct*)callData; obj->tabActivate(cbs->pos); } XFE_PropertyTabView* XFE_PropertySheetView::addTab(int tabNameId) { XFE_PropertyTabView *tab = new XFE_PropertyTabView(getToplevel(), this, tabNameId); addView(tab); tab->show(); return tab; }/* XFE_PropertySheetView::addTab */ void XFE_PropertySheetView::addTab(XFE_PropertyTabView* tab, XP_Bool show) { addView(tab); if (show) tab->show(); }/* XFE_PropertySheetView::addTab */ void XFE_PropertySheetView::setDlgValues() { if (m_subviews && m_numsubviews) { for (int i=0; i < m_numsubviews; i++) { ((XFE_PropertyTabView *) m_subviews[i])->setDlgValues(); }/* for i */ }/* if */ }/* XFE_PropertySheetView::setDlgValues() */ void XFE_PropertySheetView::getDlgValues() { if (m_subviews && m_numsubviews) { for (int i=0; i < m_numsubviews; i++) { ((XFE_PropertyTabView *) m_subviews[i])->getDlgValues(); }/* for i */ }/* if */ }/* XFE_PropertySheetView::getDlgValues() */ void XFE_PropertySheetView::apply() { if (m_subviews && m_numsubviews) { for (int i=0; i < m_numsubviews; i++) { ((XFE_PropertyTabView *) m_subviews[i])->apply(); }/* for i */ }/* if */ }/* XFE_PropertySheetView::apply() */