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.
- */
-
- // Creates a class that will represent the new toolbar which can hold
- // the new buttons for the customizable toolbar.
-
-
- #ifndef _TOOLBAR2_H
- #define _TOOLBAR2_H
-
- #include <afxwin.h>
- #include <afxext.h>
- #include <afxpriv.h>
- #include <afxole.h>
- #include <afxdisp.h>
- #include <afxodlgs.h>
- #ifdef _WIN32
- #include <afxcmn.h>
- #endif
-
- #include "tlbutton.h"
- #include "csttlbr2.h"
-
- #define TOOLBAR_WIDTH_CHANGED (WM_USER + 31)
- #define TOOLBAR_BUTTON_ADD (WM_USER + 40)
- #define TOOLBAR_BUTTON_REMOVE (WM_USER + 41)
- #define TOOLBAR_BUTTON_DELETED (WM_USER + 42)
-
- class CToolbarDropSource : public COleDropSource {
- public:
- CToolbarDropSource() {}
- SCODE GiveFeedback( DROPEFFECT dropEffect);
-
- };
-
- class CCustToolbar;
-
-
- class CNSToolbar2 : public CWnd {
- //DECLARE_DYNCREATE(CNSToolbar2)
-
- protected:
- BOOL m_bEraseBackground;
-
- int m_nMaxButtons; // The maximum number of buttons this toolbar can hold
- BOOL m_nToolbarStyle; // whether we are in novice or advanced mode
- int m_nPicturesAndTextHeight; // Our height when we are in novice mode
- int m_nPicturesHeight;
- int m_nTextHeight; // Our height when we are in advanced mode
- CToolbarButton** m_pButtonArray; // The array of toolbar buttons
- int m_nNumButtons; // The number of buttons we currently hold
- int m_nHeight; // Our current height
- int m_nWidth; // Our current required width given all of the buttons
-
- BOOL m_bDragging; // Are we currently dragging a button
- int m_nDraggingButton; // Index of button we are dragging
- CPoint m_draggingPoint; // Point we started dragging from
- CCustToolbar* m_pCustToolbar; // A pointer to the customizable toolbar it belongs to
-
- int m_nMaxButtonWidth; // The width of the widest button
- int m_nMaxButtonHeight;// The height of the tallest button
- HBITMAP m_hBitmap; // Bitmap to be used for toolbar (doesn't have to have one);
- CPtrArray m_pHiddenButtons; // Buttons we are keeping track of but aren't currently showing;
- BOOL m_bButtonsSameWidth;// Are all the buttons the width of the largest one or
- // their own individual widths
- UINT m_nBitmapID; // The toolbar's bitmap
- public:
- CNSToolbar2(){}
- CNSToolbar2(int nMaxButtons, int nToolbarStyle, int nPicturesAndTextHeight, int nPicturesHeight, int nTextHeight);
- ~CNSToolbar2();
-
- int Create(CWnd *pParent);
-
- virtual void AddButtonAtIndex(CToolbarButton *pButton, int index = -1, BOOL bNotify = TRUE);
- virtual int AddButtonAtPoint(CToolbarButton *pButton, CPoint point, BOOL bAddButton = TRUE);
-
- virtual void AddButton(CToolbarButton* pButton, int index = -1) { AddButtonAtIndex(pButton, index); }
-
- void AddHiddenButton(CToolbarButton *pButton);
-
- CToolbarButton* RemoveButton(int nIndex, BOOL bNotify = TRUE);
- CToolbarButton* RemoveButton(CToolbarButton *pButton);
- CToolbarButton* RemoveButtonByCommand(UINT nCommand);
-
- void DecrementButtonCount() { m_nNumButtons--; }
-
- void HideButtonByCommand(UINT nCommand);
- void ShowButtonByCommand(UINT nCommand, int nPos);
-
- void RemoveAllButtons(void);
- CToolbarButton *ReplaceButton(UINT nCommand, CToolbarButton *pNewButton);
- void ReplaceButton(UINT nOldCommand, UINT nNewCommand);
-
- CToolbarButton* GetNthButton(int nIndex);
- CToolbarButton* GetButton(UINT nID); //Added by cmanske
-
- int GetNumButtons(void);
-
- void SetBitmap(UINT nBitmapID);
- void SetBitmap(char *pBitmapFile);
- HBITMAP GetBitmap(void);
-
- // Sets each buttons bitmap to be nWidth by nHeight;
- void SetBitmapSize(int nWidth, int nHeight);
-
- void SetToolbarStyle(int nToolbarStyle);
- BOOL GetToolbarStyle(void) {return m_nToolbarStyle;}
- void LayoutButtons(void);
- virtual void LayoutButtons(int nStartIndex);
- virtual void WidthChanged(int width) {}; // used by personal toolbar.
-
- BOOL GetButtonRect(UINT nID, RECT *pRect);
-
- void SetCustomizableToolbar(CCustToolbar* pCustToolbar);
- CCustToolbar *GetCustomizableToolbar(void);
-
- virtual int GetHeight(void);
- int GetWidth(void);
-
- void SetButtonsSameWidth(BOOL bButtonsSameWidth);
- BOOL GetButtonsSameWidth(void) { return m_bButtonsSameWidth; }
-
- void ReplaceButtonBitmapIndex(UINT nID, UINT nIndex);
-
- BOOL OnCommand( WPARAM wParam, LPARAM lParam );
- virtual BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult );
-
- void OnUpdateCmdUI( CFrameWnd* pTarget, BOOL bDisableIfNoHndler );
-
- // Set a button to do its command on button down instead of button up
- BOOL SetDoOnButtonDownByCommand(UINT nCommand, BOOL bDoOnButtonDown);
-
- // Generated message map functions
- //{{AFX_MSG(CNSToolbar2)
- afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- afx_msg LRESULT OnButtonDrag(WPARAM, LPARAM);
- afx_msg void OnShowWindow( BOOL bShow, UINT nStatus );
- afx_msg BOOL OnEraseBkgnd( CDC* pDC );
- afx_msg void OnPaint(void);
- afx_msg LRESULT OnToolbarButtonSizeChanged(WPARAM, LPARAM);
- afx_msg void OnPaletteChanged( CWnd* pFocusWnd );
- afx_msg void OnSysColorChange( );
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
-
- protected:
- int FindButton(CPoint point);
- int FindButton(CWnd *pButton);
- int FindButton(UINT nCommand);
- void MoveButton(int nIndex);
- BOOL CheckMaxButtonSizeChanged(CToolbarButton *pButton, BOOL bAdd);
- void ChangeButtonSizes(void);
- BOOL FindLargestButton(void);
- //Given an index, this says where a button starts and where it ends
- void GetButtonXPosition(int nSelection,int & nStart,int & nEnd);
- int FindButtonFromBoundary(int boundary, BOOL bIsBefore);
-
-
-
-
-
-
- };
-
-
-
- class CCommandToolbarDropTarget : public COleDropTarget
- {
- public:
- CCommandToolbarDropTarget() {}
-
- protected:
- virtual DROPEFFECT OnDragEnter(CWnd * pWnd,
- COleDataObject * pDataObject, DWORD dwKeyState, CPoint point);
- virtual DROPEFFECT OnDragOver(CWnd * pWnd,
- COleDataObject * pDataObject, DWORD dwKeyState, CPoint point );
- virtual BOOL OnDrop(CWnd * pWnd, COleDataObject * pDataObject,
- DROPEFFECT dropEffect, CPoint point);
-
- private:
-
- };
-
- class CCommandToolbar : public CNSToolbar2 {
-
- //private:
- CCommandToolbarDropTarget m_DropTarget;
-
- public:
- CCommandToolbar(int nMaxButtons, int nToolbarStyle, int nPicturesAndTextHeight, int nPicturesHeight,
- int nTextHeight);
-
- int Create(CWnd *pParent);
- virtual int GetHeight(void);
-
- // Generated message map functions
- //{{AFX_MSG(CCommandToolbar)
- afx_msg int OnCreate ( LPCREATESTRUCT );
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
-
- };
-
-
- class CToolbarControlBar : public CControlBar {
-
- protected:
- CNSToolbar2 *m_pToolbar;
- BOOL m_bEraseBackground;
-
- public:
- CToolbarControlBar();
- ~CToolbarControlBar();
-
- //Creation
- int Create(CFrameWnd *pParent, DWORD dwStyle, UINT nID );
-
- //Positioning/Resizing
- virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode );
-
- virtual void OnUpdateCmdUI( CFrameWnd* pTarget, BOOL bDisableIfNoHndler );
-
- void SetToolbar(CNSToolbar2 *pToolbar) { m_pToolbar = pToolbar; }
- CNSToolbar2* GetToolbar(void) { return m_pToolbar; }
-
- // Generated message map functions
- //{{AFX_MSG(CToolbarControlBar)
- afx_msg void OnShowWindow( BOOL bShow, UINT nStatus );
- afx_msg BOOL OnEraseBkgnd( CDC* pDC );
- afx_msg void OnSize( UINT nType, int cx, int cy );
- afx_msg void OnPaint(void);
- #ifndef WIN32
- afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
- #endif
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- #endif
-