home *** CD-ROM | disk | FTP | other *** search
- /* -*- 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.
- */
-
- #ifndef NAVCNTR_H
- #define NAVCNTR_H
-
- #include "usertlbr.h"
-
- // Window Control IDs for NavCenter.
- // Improves findability.
- #define NC_IDW(ID) (AFX_IDW_PANE_LAST - (ID))
- #define NC_IDW_MISCVIEW NC_IDW(0)
- #define NC_IDW_SELECTOR NC_IDW(1)
- #define NC_IDW_OUTLINER NC_IDW(2)
- #define NC_IDW_HTMLPANE NC_IDW(3)
- #define NC_IDW_DRAGEDGE NC_IDW(5)
- #define NC_IDW_NAVMENU NC_IDW(6)
-
-
- #define ICONXPOS 5
- #define ICONYPOS 5
- #define ICONYINC 42
- #define SCROLLID 2900
- #define ICONBASEID 3000
- #define BUTTON_HEIGHT 28
- #define BUTTON_WIDTH 28
- #define IMAGE_SIZE 23
- #define TEXT_HEIGHT 20
- #define SCROLLTIMERID 2910
- #define NOSCROLL 0
- #define SCROLLUP 1
- #define SCROLLDOWN 2
- #define SCROLLLEFT 3
- #define SCROLLRIGHT 4
- #define SCROLLSTEP 32
- #define MAX_BUTTON_TITLE 54
-
- #define EDIT_CONTROL 4000
-
- #define IDT_PANESWITCH 40000
- #define IDT_SWITCHDELAY 500
-
- #include "cxicon.h"
- #include "htrdf.h"
-
- #define ID_BUTTONEVENT 1000
- #define ID_MOUSE_MOVE 1001
-
- class CRDFContentView;
-
- class CSelectorButton : public CLinkToolbarButton
- {
- friend class CSelector;
-
- protected:
- CView* pView; // View including the HTML pane
- CRDFContentView* m_pTreeView; // Pointer straight to the RDF Tree view.
- CPaneCX* m_pPane;
- CSelector* m_pSelector;
- HT_View m_HTView; // Pointer to HT_View if one exists. Could be NULL.
- HT_Pane m_Pane; // This is the button's popup menu pane.
- // The Selector Button actually has two HT_Nodes, two HT_Views, and two HT_Panes. One set is the pane in
- // which the button is found (along with all the other buttons). The second set is for the popup menu
- // that comes up on a timed mouse down on the button.
- // m_HTView is used with the pane that contains all the buttons.
- // m_Pane is used for the popup menu.
- // The base class has an m_Node member variable. This is the popup variable's top node in its selected
- // HT_View. -- Dave H.
-
- public:
- CSelectorButton(CSelector* pSelector)
- :m_pSelector(pSelector), pView(NULL), m_pPane(NULL),
- m_HTView(NULL) {};
-
- ~CSelectorButton();
-
- void SetHTView(HT_View v) { m_HTView = v; }
- virtual HT_View GetHTView() { return m_HTView; }
-
- CView* GetView() { return pView; }
-
- virtual BOOL UseLargeIcons() { return TRUE; }
-
- virtual void OnAction(void);
-
- int Create(CWnd *pParent, int nToolbarStyle, CSize noviceButtonSize, CSize advancedButtonSize,
- LPCTSTR pButtonText, LPCTSTR pToolTipText,
- LPCTSTR pStatusText,
- CSize bitmapSize, int nMaxTextChars, int nMinTextChars,
- HT_Resource pNode, DWORD dwButtonStyle = 0, CView* view = NULL, CPaneCX* pane = NULL);
-
- void SetDepressed(BOOL b) { m_bDepressed = b; Invalidate(); }
-
- CRDFContentView* GetTreeView() { return m_pTreeView; } // Returns only the tree
-
- void SetTreeView(CRDFContentView* tree) { m_pTreeView = tree; } // Sets the tree view
-
- virtual void DrawPicturesMode(HDC hDC, CRect rect);
- // Overridden because LinkToolbarButtons draw text with the pictures always. We
- // want to revert to ToolbarButton behavior.
-
- virtual void DrawPicturesAndTextMode(HDC hDC, CRect rect);
- // Overridden to ensure bitmap is drawn on top rather than on side (as is the case
- // with LinkToolbar buttons).
-
- virtual CSize GetButtonSizeFromChars(CString s, int c);
- // Overridden to put the bitmap on top.
-
- virtual void GetPicturesAndTextModeTextRect(CRect &rect);
- // more bitmap on top goodness
-
- virtual void GetPicturesModeTextRect(CRect &rect);
- // gotta have that bitmap on top
-
- virtual CPoint RequestMenuPlacement()
- {
- CPoint point(GetRequiredButtonSize().cx, 0);
- ClientToScreen(&point);
- return point; // Want it to open on the side.
- }
-
- void DisplayMenuOnDrag();
- // Called when the user mouses over a selector button and NO TREE IS DISPLAYED (i.e., just the
- // selector is showing in a docked view.
-
- virtual BOOL CreateRightMouseMenu();
- // Overridden to bring up context menus.
-
- };
-
- class CSelectorDropTarget : public COleDropTarget
- {
- public:
- //Construction
- CSelectorDropTarget(CSelector* parentFrame);
- ~CSelectorDropTarget();
- BOOL OnDrop(CWnd *, COleDataObject *, DROPEFFECT, CPoint);
- DROPEFFECT OnDragEnter(CWnd *, COleDataObject *, DWORD, CPoint);
- DROPEFFECT OnDragOver(CWnd *, COleDataObject *, DWORD, CPoint);
- void OnDragLeave(CWnd *);
- CSaveCX* pSaveContext;
- char fileName[_MAX_PATH];
- CFile* fd;
- CSelector* m_pParent;
- CString m_url;
- private:
- int m_nIsOKDrop;
- };
-
- class CNavSelScrollButton : public CButton
- {
- public:
- CNavSelScrollButton(HBITMAP hBmp, int width, int index, int height);
- HBITMAP m_hbmp;
- int m_buttonID;
- int m_index;
- int m_width;
- int m_height;
- BOOL m_selected;
- CRect m_boundBox;
- DECLARE_DYNCREATE(CNavSelScrollButton)
- void setBoundingBox(int left, int top, int right, int bottom) {
- m_boundBox.SetRect(left, top, right, bottom);
- }
- void AdjustPos(){ MoveWindow(m_boundBox);}
- BOOL IsPtInRect(POINT &pt)
- { if (PtInRect(&m_boundBox, pt)) return TRUE;
- else return FALSE;}
- virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CButton)
-
- //}}AFX_VIRTUAL
- DECLARE_MESSAGE_MAP()
- };
-
-
- class CSelector : public CView
- {
-
- friend class CSelectorButton;
- public:
- DECLARE_DYNAMIC(CSelector)
- CSelector();
- virtual ~CSelector();
- void AddViewContext(const char* pTitle, CView* pView, CRDFContentView* pTree,
- CPaneCX* htmlPane, HT_View theView);
- CView* GetCurrentView(); // Gets the view including the HTML pane
- CSelectorButton* GetCurrentButton();
-
- void SetCurrentView(CSelectorButton* pButton);
- void SelectNthView(int i);
-
- void PopulatePane();
- void DestroyViews();
- void ConstructView(HT_View v);
- HT_Pane GetHTPane() {return m_Pane;}
- void ShowScrollButton(CSelectorButton* button);
- void OnDraw( CDC* pDC );
- int GetScrollDirection() {return m_scrollDirection;}
- void ScrollSelector();
- void StopScrolling() {m_scrollDirection = NOSCROLL;}
- void UnSelectAll();
- HBRUSH GetNormalBrush() {return hBrush;}
- HBRUSH GetHtBrush() {return hHtBrush;}
-
- void SetDragButton(CSelectorButton* pButton) { m_pDragButton = pButton; };
- CSelectorButton* GetDragButton() { return m_pDragButton; }
- UINT GetSwitchTimer() { return m_hPaneSwitchTimer; }
- void KillSwitchTimer() { KillTimer(IDT_PANESWITCH); m_hPaneSwitchTimer = 0; }
- void SetSwitchTimer() { m_hPaneSwitchTimer = SetTimer(IDT_PANESWITCH, IDT_SWITCHDELAY, NULL); }
-
- CSelectorButton* GetButtonFromPoint(CPoint point, BOOL& onButton);
-
- afx_msg void OnRButtonUp ( UINT nFlags, CPoint point );
- afx_msg void OnLButtonDown (UINT nFlags, CPoint point );
- afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
-
- // function needed for NavFram.cpp
- void RearrangeIcons();
-
- BOOL IsTreeVisible(); // Whether or not the tree view is currently showing.
-
- protected:
- int m_scrollDirection;
- CSelectorButton * m_pCurButton;
- CView* m_pCurView; // The entire view (including the HTML pane)
- CRDFCommandMap m_MenuCommandMap; // Command map for back-end generated right mouse menu commands.
-
- CSelectorDropTarget * m_pDropTarget;
- CNavSelScrollButton* m_scrollUp;
- CNavSelScrollButton* m_scrollDown;
- HBITMAP m_hScrollBmp;
- SIZE m_hScrollBmpSize;
- CRect m_boundingBox;
- int m_xpos;
- int m_ypos;
- int m_scrollPos;
- HBRUSH hBrush;
- HBRUSH hHtBrush;
-
- CSelectorButton* m_pDragButton; // The button that is currently hovered over in a drag.
- UINT m_hPaneSwitchTimer;
-
- CPoint m_PointHit; // The point hit on a mouse down on the selector bar (not on one of the buttons).
-
- HT_Pane m_Pane; // RDF Pane associated with this NavCenter frame.
- HT_Notification m_Notification; // Notification struct that is tossed around.
- //{{AFX_MSG(CMainFrame)
- afx_msg void OnSize( UINT nType, int cx, int cy );
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg BOOL OnEraseBkgnd( CDC* pDC );
- afx_msg void OnParentNotify( UINT message, LPARAM lParam );
- afx_msg void OnTimer(UINT id);
- afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
- afx_msg BOOL OnCommand( WPARAM wParam, LPARAM lParam );
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
-
-
- extern "C" {
- // Netlib API to the stream that will save the file to disk.
- NET_StreamClass *ContextSaveStream(int iFormatOut, void *pDataObj, URL_Struct *pUrl, MWContext *pContext);
-
- unsigned int MCFSaveReady(NET_StreamClass *stream);
- int MCFSaveWrite(NET_StreamClass *stream, const char *pWriteData, int32 iDataLength);
- void MCFSaveComplete(NET_StreamClass *stream);
- void MCFSaveAbort(NET_StreamClass *stream, int iStatus);
- };
-
- #endif
-