1 /***********************************************************************/
2 /* Open Visualization Data Explorer                                    */
3 /* (C) Copyright IBM Corp. 1989,1999                                   */
4 /* ALL RIGHTS RESERVED                                                 */
5 /* This code licensed under the                                        */
6 /*    "IBM PUBLIC LICENSE - Open Visualization Data Explorer"          */
7 /***********************************************************************/
8 
9 #include <dxconfig.h>
10 #include "../base/defines.h"
11 
12 
13 
14 #ifndef _TickLabelList_h
15 #define _TickLabelList_h
16 
17 
18 #include "UIComponent.h"
19 #include "List.h"
20 
21 //
22 // Class name definition:
23 //
24 #define ClassTickLabelList "TickLabelList"
25 
26 extern "C" void TickLabelList_ButtonEH(Widget, XtPointer, XEvent*, Boolean*);
27 extern "C" void TickLabelList_DeleteAllCB(Widget, XtPointer, XtPointer);
28 extern "C" void TickLabelList_AppendCB(Widget, XtPointer, XtPointer);
29 extern "C" void TickLabelList_ResizeTicksCB(Widget, XtPointer, XtPointer);
30 
31 extern "C" void TickLabelList_AppendAfterSelCB(Widget, XtPointer, XtPointer);
32 extern "C" void TickLabelList_InsertAboveSelCB(Widget, XtPointer, XtPointer);
33 extern "C" void TickLabelList_DeleteSelCB(Widget, XtPointer, XtPointer);
34 
35 extern "C" void TickLabelList_SortUpCB(Widget, XtPointer, XtPointer);
36 extern "C" void TickLabelList_SortDownCB(Widget, XtPointer, XtPointer);
37 
38 extern "C" int TickLabelList_SortFunc (const void* e1, const void* e2);
39 
40 class TickLabel;
41 class TickLabelList;
42 typedef void (*TickListModifyCB) (TickLabelList*, void*);
43 
44 // Used only in the AutoAxesDialog
45 class TickLabelList : public UIComponent
46 {
47   private:
48 
49     static boolean ClassInitialized;
50     static String DefaultResources[];
51 
52     char *header;
53 
54     Widget header_label;
55     Widget header_button;
56     Widget listRC;
57 
58     Widget popupMenu;
59     Widget aasButton; // append after selection
60     Widget iasButton; // insert above selection
61     Widget dsButton;  // delete selection
62     Widget ntiButton; // new top item
63     Widget daButton;  // delete all
64 #if UI_SHOULD_SORT_TICKS
65     Widget suButton;  // sort in ascending order
66     Widget sdButton;  // sort in descending order
67 #endif
68     Widget labelLabel;
69 
70     List ticks;
71 
72     int highest_set_number;
73 
74     int dirty;
75 
76     double *oldDvals;
77     String oldString;
78 
79     static void SelectCB (TickLabel*, void*);
80     TickListModifyCB  tlmcb;
81     void *clientData;
82 
83     void resizeCallback();
84 
85   protected:
86     friend void TickLabelList_ButtonEH(Widget, XtPointer, XEvent*, Boolean*);
87     friend void TickLabelList_DeleteAllCB(Widget, XtPointer, XtPointer);
88     friend void TickLabelList_AppendCB(Widget, XtPointer, XtPointer);
89     friend void TickLabelList_ResizeTicksCB(Widget, XtPointer, XtPointer);
90 
91     friend void TickLabelList_AppendAfterSelCB(Widget, XtPointer, XtPointer);
92     friend void TickLabelList_InsertAboveSelCB(Widget, XtPointer, XtPointer);
93     friend void TickLabelList_DeleteSelCB(Widget, XtPointer, XtPointer);
94     friend void TickLabelList_SortUpCB(Widget, XtPointer, XtPointer);
95     friend void TickLabelList_SortDownCB(Widget, XtPointer, XtPointer);
96 
97     friend int TickLabelList_SortFunc (const void* e1, const void* e2);
98 
99     void sortList(boolean up);
100 
101     static boolean SortUp;
102 
103   public:
104 
105     void setNumber (int pos, double dval);
106     void setText (int pos, char *str);
107     void setListSize (int size);
108 
109     void createList (Widget parent);
110     void createLine (double dval, const char *str, int pos);
111 
112     void clear();
113 
114     boolean isModified();
115     boolean isNumberModified();
116     boolean isTextModified();
117     void markClean();
118     void markNumbersClean();
119     void markTextClean();
120 
121     double * getTickNumbers();
122 
123     // should be const.  ImageNode is misdefined.
124     /*const*/ char * getTickTextString();
getTickCount()125     int getTickCount() { return this->ticks.getSize(); };
126 
127     virtual void initialize();
128 
129     TickLabelList (const char *header, TickListModifyCB, void *);
130     ~TickLabelList ();
131 
getClassName()132     const char* getClassName() { return ClassTickLabelList; };
133 };
134 
135 
136 #endif // _TickLabelList_h
137