U.S. patent application number 09/769712 was filed with the patent office on 2001-05-31 for method and system for adding application defined properties and application defined property sheet pages.
This patent application is currently assigned to Microsoft Corporation.. Invention is credited to Elsbree, John E., Fraley, Christopher Lee, Zimmerman, Christopher A..
Application Number | 20010002129 09/769712 |
Document ID | / |
Family ID | 23637058 |
Filed Date | 2001-05-31 |
United States Patent
Application |
20010002129 |
Kind Code |
A1 |
Zimmerman, Christopher A. ;
et al. |
May 31, 2001 |
Method and system for adding application defined properties and
application defined property sheet pages
Abstract
A method and system for adding application defined properties
and application defined property sheet pages are provided. The
application defined properties may be added to a list of system
defined properties. Once added, the application defined properties
may be displayed and edited. In addition, a user may select several
objects, display the properties common to all of the objects in a
list, and edit the common properties. Moreover, application defined
property sheet pages may be added to a set of system defined
property sheet pages. A user may then display and edit the
application defined property sheet pages. Also, a user may select
several objects, display the properties common to all of the
objects on a per-property browsing list, and edit the common
properties. In addition, a user may select several objects, display
the property sheet pages common to all of the objects, and edit the
properties on these property sheet pages. Furthermore a user may
switch between viewing a property in a list of properties and
viewing a property on a property sheet page.
Inventors: |
Zimmerman, Christopher A.;
(Bellevue, WA) ; Fraley, Christopher Lee;
(Woodinville, WA) ; Elsbree, John E.; (Redmond,
WA) |
Correspondence
Address: |
SCHWEGMAN, LUNDBERG, WOESSNER & KLUTH, P.A.
P.O. Box 2938
Minneapolis
MN
55402
US
|
Assignee: |
Microsoft Corporation.
|
Family ID: |
23637058 |
Appl. No.: |
09/769712 |
Filed: |
January 25, 2001 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
09769712 |
Jan 25, 2001 |
|
|
|
08886110 |
Jun 30, 1997 |
|
|
|
08886110 |
Jun 30, 1997 |
|
|
|
08413396 |
Mar 30, 1995 |
|
|
|
5682510 |
|
|
|
|
08413396 |
Mar 30, 1995 |
|
|
|
09231719 |
Jan 15, 1999 |
|
|
|
6208337 |
|
|
|
|
Current U.S.
Class: |
715/700 |
Current CPC
Class: |
G06F 9/451 20180201;
G06F 8/34 20130101 |
Class at
Publication: |
345/352 ;
345/346 |
International
Class: |
G06F 003/00 |
Claims
What is claimed is:
1. In a data processing system having a video display, a processor
that runs an application program, and an operating system that
includes a per-property browser, a method comprising the steps of:
providing an object with associated system defined properties;
displaying a list of system defined properties on the video
display; providing an object with an associated application defined
property; obtaining an identifier to an application defined
property type that is defined by the application program; obtaining
a current value for tie application defined property; and adding an
identifier of the application defined property type and the current
value for the application defined property to the list of system
defined properties displayed on the video display.
2. The method of claim 1, further comprising the step of, for each
system defined property, determining whether the system defined
property is also on a property sheet page.
3. The method of claim 2, further comprising the step of providing
a property sheet page map button for displaying the property sheet
page containing the system defined property when the system defined
property is also on the property sheet page.
4. The method of claim 3, further comprising the steps of:
providing code to map the system defined property to the property
sheet page; receiving user input to activate the property sheet
page map button; calling the provided code to map to the property
sheet page for the system defined property; and displaying the
property sheet page for the system defined property.
5. The method of claim 1 wherein the step of adding the identifier
of the application defined property type and the current value for
the application defined property to the list comprises the step of
determining whether the application defined property is also on a
property sheet page.
6. The method of claim 5, further comprising the step of providing
a property sheet page map button for displaying the property sheet
page containing the application defined property when the
application defined property is also on the property sheet
page.
7. The method of claim 6, further comprising the steps of:
providing code to map the application defined property to the
property sheet page; receiving user input to activate the property
sheet page map button; calling the provided code to map to the
property sheet page for the application defined property; and
displaying the property sheet page for the application defined
property.
8. The method of claim 1, further comprising the step of, for each
system defined property, determining whether the system defined
property has a drop down list associated with it.
9. The method of claim 8, further comprising the step of providing
a drop down list button for displaying the drop down list when the
system defined property has a drop down list associated with
it.
10. The method of claim 9, further comprising the steps of:
providing code to obtain entries for the drop down list; receiving
user input to activate the drop down list button; calling the
provided code to obtain entries for the drop down list; and
displaying the drop down list on the video display.
11. The method of claim 1 wherein the step of adding the identifier
of the application defined property type and the current value for
the application defined property to the list comprises the step of
determining whether the application defined property has a drop
down list associated with it.
12. The method of claim 11, further comprising the step of
providing a drop down list button for displaying the drop down list
when the application defined property has a drop down list
associated with it.
13. The method of claim 12, further comprising the steps of:
providing code to obtain entries for the drop down list; receiving
user input to activate the drop down list button; calling code to
obtain the entries for the drop down list; and displaying the drop
down list on the video display.
14. The method of claim 1, further comprising the step of editing
the list of properties by modifying a property in the list on the
video display.
15. In a data processing system having a video display, a
processing means running an operating system and an application
program, and a list of system defined properties, a system
comprising: means for displaying a list of the system defined
properties on the video display; means for providing an object with
an associated application defined property; means for obtaining an
identifier to an application defined property type defined by the
application program; means for obtaining a current value for the
application defined property; means for adding the identifier to
the application defined property type and the current value of the
application defined property to the list of system defined
properties displayed on the video display.
16. The data processing system of claim 15, further comprising:
means for determining whether to provide a property sheet page map
button; and means for providing the property sheet page map button
when it is determined that it should be provided.
17. The data processing system of claim 15, further comprising:
means for determining whether to provide a drop down list button;
and means for providing the drop down list button when it is
determined that it should be provided.
18. In a data processing system having a video display, a processor
running an operating system, and a per-property browsing list, a
method comprising the steps of: providing an object with an
application defined property; providing code for a function to
obtain the type of the application defined property; providing code
for a function to obtain the current value of the application
defined property; calling the provided code for a function to
obtain the type of the application defined property; calling the
provided code for a function to obtain the current value of the
application defined property; and adding the type and current value
of the application defined property to the per-property browsing
list.
19. The method of claim 18 wherein the step of adding further
comprises displaying the application defined property in the
per-property browsing list on the video display.
20. In a data processing system having a video display, an
operating system that includes a property sheet page browser for
browsing property sheet pages, and a set of system defined property
sheet pages, a method comprising the steps of: providing an object
and an associated application defined property sheet page for the
object; adding the application defined property sheet page to the
set of system defined property sheet pages displayed on the video
display; and browsing the set of system defined property sheet
pages using the property sheet page browser.
21. The method of claim 20 wherein the step of adding an
application defined property sheet page comprises the step of
calling code to show the application defined property sheet page on
the video display.
22. The method of claim 20 wherein the step of browsing comprises
the step of displaying a different property sheet page on the video
display.
23. The method of claim 20, further comprising the steps of:
displaying the application defined property sheet page with a tab
indicating a name for the application defined property sheet page;
displaying each property on the application defined property sheet
page; and displaying associated drop down list buttons with each
property on the application defined property sheet page.
24. The method of claim 23, further comprising the steps of:
receiving user input activating the drop down list button; and
displaying a drop down list on the video display.
25. The method of claim 20 wherein the step of browsing comprises
the step of modifying the application defined property sheet page
on the video display by changing a current value of a property on
the application defined property sheet page.
26. In a data processing system having a processing means for
running an operating system, a video display, and a set of system
defined property sheet pages, the system comprising: means for
displaying the set of system defined property sheet pages; means
for providing an object with an associated application defined
property sheet page; and means for adding the application defined
property sheet page to the set of system defined property sheet
pages displayed on the video display.
27. The system of claim 26, further comprising means for modifying
the application defined property sheet page on the video
display.
28. In a data processing system having a video display, a method
comprising the steps of: receiving a plurality of objects, each
having associated application defined properties; determining
common application defined properties of the objects; and
displaying the determined common application defined properties on
a per-property browsing list on a video display.
29. The method of claim 28 wherein the step of displaying the
determined common application defined properties includes the step
of displaying the determined common application defined properties
with a current property value when the current property value for
each application defined property of an object is the same and
displaying an unmatched properties indicator when the current
property value for each application defined property of an object
is not the same.
30. In a data processing system having a video display, a method
comprising the steps of: receiving a plurality of objects, each
having associated property sheet pages; determining whether the
objects have common property sheet pages; and when the objects have
common property sheet pages, displaying the determined common
property sheet pages on a video display.
31. The method of claim 30 wherein the step of displaying the
common property sheet pages includes the step of displaying each
property sheet page with current property values when the property
sheet page of each object is the same and displaying an unmatched
property sheet page indicator when the property sheet page of each
object is not the same.
32. In a data processing system having a video display and an
operating system that includes a per-property browser and a
property sheet page browser, a method comprising the steps of:
providing an application defined property; providing a per-property
browsing list having an entry for the application defined property;
providing a property sheet page browser having a property sheet
page for the application defined property; when receiving user
input indicating a desire to switch from the per-property browser
to the property sheet page browser, mapping to a property sheet
page; and when receiving user input indicating a desire to switch
from the property sheet page browser to the per-property browser,
mapping to a property sheet page containing a per-property browsing
list.
33. The method of claim 32 wherein the step of providing a
per-property browsing list comprises providing the per-property
browsing list where each entry has a property sheet page map
button.
34. The method of claim 32 wherein the step of providing a property
sheet page comprises providing the property sheet page with a tab
indicating it contains the per-property browsing list.
Description
TECHNICAL FIELD
[0001] The present invention relates generally to data processing
systems and, more particularly, to displaying and editing
properties of an object.
BACKGROUND OF THE INVENTION
[0002] Objects often have properties associated with them. A
property defines an aspect of a state of an object. For instance, a
label for a form may be represented as an object, and the label
object may have a "Font Name" property that identifies the font of
the text contained in the label. A property also has an associated
type, such as string or integer. An object typically has system
defined properties associated with it. System defined properties
are properties whose types are defined by the system. An object may
also have application defined properties associated with it.
Application defined properties are properties whose types are
defined by an application developer. An application developer also
defines an object and properties associated with the object.
[0003] Current systems enable a user to display and edit system
defined properties of an object, such as the "Font Name" property.
Some systems offer the per-property browsing method which allows
display and editing of system defined properties which appear in a
list, as illustrated in FIG. 1. Other systems offer the property
sheet page method which allows display and editing of system
defined properties which appear on system defined property sheet
pages; as illustrated in FIG. 2. System defined property sheet
pages are property sheet pages which are defined by the system.
[0004] The per-property browsing method displays all system defined
properties of one object on a list, typically in alphabetical
order. For instance, in FIG. 1, a list of properties for a label
object is depicted. One property name "Font Name" is shown along
with the current value "Roman." This method enables a user to find
a particular property by searching the list for the system defined
property. For example, a user would search through the list
illustrated in FIG. 1 to find the property name "Font Name."
[0005] The property sheet page method groups system defined
properties into logical subsets which are displayed on system
defined property sheet pages on a per object basis. Each system
defined property sheet page may be used to display or edit a
portion of the state of an object For example, in FIG. 2, the
"Font" group is illustrated on a system defined property sheet page
for a label object, along with the property names "Font Name" and
"Font Size." FIG. 2 shows that the current state of the object is a
"Roman" font name with size 12 print Also, the method enables a
user to find a particular system defined property by requesting the
group that includes the system defined property. For example, the
method enables a user to find the property name "Font Name" by
requesting the "Font" group.
[0006] Additionally, objects generally have system defined
properties associated with them. Some objects also have application
defined properties associated with them. Some current systems are
limited in their capabilities in that they do not provide display
and editing of application defined properties, although they
provide display and editing of system defined properties.
[0007] Some conventional systems lack the ability to provide
multiple selection. That is, some conventional systems allow for
display and editing of properties of a single object. When several
objects have common properties which a user wishes to edit, the
user selects each object and edits its property separately. With
multiple selection, however, a user may display and edit the common
properties of several objects at one time.
[0008] Also, conventional systems do not provide the ability to
switch between the per-property browsing and property sheet page
methods. Some users may prefer one method over the other. Also,
sometimes, a user may prefer to use one method and then switch to
the other method. Therefore, a user should be able to switch
between the per-property browsing and property sheet page
methods.
SUMMARY OF THE INVENTION
[0009] The above-described difficulties encountered by conventional
systems are overcome by the present invention. In accordance with a
first aspect of the present invention, a method is practiced in a
data processing system that includes a video display and a
processor that runs an application program. The data processing
system also includes an operating system that includes a
per-property browser. In this method, an object with associated
system defined properties is provided. A list of system defined
properties is displayed on the video display. An object with an
associated application defined property is provided. An identifier
to an application defined property type that is defined by the
application program is obtained. A current value for the
application defined property is obtained. The identifier of the
application defined property type and the current value for the
application defined property are added to the list of system
defined properties displayed on the video display.
[0010] In accordance with a further aspect of the present
invention, a data processing system includes a video display and a
processing means running an operating system and an application
program. A list of system defined properties is also included in
the data processing system. In this system, a means for displaying
a list of system defined properties on the video display is
provided. Also, a means for providing an object with an associated
application defined property is included in the system. A means for
obtaining an identifier to an application defined property type
defined by the application program is provided. The system also
includes a menus for obtaining a current value for the application
defined property. A means for adding the identifier of the
application defined property type and the current value for the
application defined property to the list of system defined
properties displayed on the video display is provided.
[0011] In accordance with an additional aspect of the present
invention, a method is practiced in a data processing system having
a video display, a processor running an operating system, and a
per-property browsing list. In this method, an object with an
application defined property is provided. Code for a function is
called to obtain the type of the application defined property. Code
for a function is called to obtain the current value of the
application defined property. The type and current value of the
application defined property are added to the per-property browsing
list.
[0012] In accordance with another aspect of the present invention,
a method is practiced in a data processing system that includes a
video display and a set of system defined property sheet pages. An
operating system that includes a property sheet page browser for
browsing property sheet pages is also included in the data
processing system. In this method, an object and an associated
application defined property sheet page for the object are
provided. The application defined property sheet page is added to
the set of system defined property sheet pages displayed on the
video display. The set of system defined property sheet pages is
browsed using the property sheet page browser.
[0013] In accordance with yet another aspect of the present
invention, a data processing system includes a processing means for
running an operating system, a video display, and a set of system
defined property sheet pages. The system provides means for
displaying the set of system defined property sheet pages. The
system also provides means for providing an object with an
associated application defined property sheet page. The system
further provides means for adding the application defined property
sheet page to the set of system defined property sheet pages
displayed on the video display.
[0014] In accordance with an additional aspect of the present
invention, a method is practiced in a data processing system that
includes a video display. In this method, a plurality of objects,
each having associated application defined properties, are
received. The common application defined properties of the
different objects are determined. The common application defined
properties are displayed on a per-property browsing list on a video
display.
[0015] In accordance with another aspect of the present invention,
a method is practiced in a data processing system that includes a
video display. In this method, a plurality of objects, each having
associated property sheet pages, are received. The method
determines whether the objects have common property sheet pages.
When the objects have common property sheet pages, the method
displays the common property sheet pages on a video display.
[0016] In accordance with yet another aspect of the present
invention, a method is practiced in a data processing system that
includes a video display and an operating system that includes a
per-property browser and a property sheet page browser. An
application defined property is provided. A per-property browsing
list having an entry for the application defined property is
provided. A property sheet page browser having a property sheet
page for the application defined property is provided. When
receiving user input indicating a desire to switch from the
per-property browser to the property sheet page browser, the method
maps to a property sheet page. When receiving user input indicating
a desire to switch from the property sheet page browser to the
per-property browser, the method maps to a property sheet page
containing a per-property browsing list.
BRIEF DESCRIPTION OF THE DRAWINGS
[0017] FIG. 1 is an illustration of a user interface in which a
conventional per-property browsing list is displayed.
[0018] FIG. 2 is an illustration of a user interface in which a
conventional property sheet page is displayed.
[0019] FIG. 3 is a block diagram of a computer system which is
suitable for practicing the preferred embodiment of the present
invention.
[0020] FIG. 4 is an example of a user interface in which a
per-property browsing list is displayed in accordance with the
preferred embodiment of the invention.
[0021] FIG. 5 is an example of a user interface in which a
per-property browsing drop down list is displayed as it appears in
the preferred embodiment of the invention.
[0022] FIG. 6 is an example of a user interface in which an
application defined property sheet page is generated in accordance
with the preferred embodiment of the invention.
[0023] FIG. 7 is an example of a user interface in which a window
containing menu options is displayed in accordance with the
preferred embodiment of the invention.
[0024] FIG. 8 is a flowchart that provides an overview of the steps
performed to add application defined properties to a per-property
browsing list for an object
[0025] FIG. 9 is a flowchart of the steps performed by the
per-property browser when either the drop down list button or the
property sheet page map button have been activated.
[0026] FIG. 10 is a flowchart of multiple selection within
per-property browsing.
[0027] FIG. 11A and FIG. 11B show a flowchart that provides an
overview of the steps performed to add application defined property
sheet pages to a set of system defined property sheet pages for an
object.
[0028] FIG. 12 is a flowchart that provides the steps performed to
edit an application defined property sheet page.
[0029] FIG. 13 is a flowchart of the property sheet page browser
when it enables switching from application defined property sheet
pages to a per-property browsing list.
[0030] FIG. 14 is a flowchart of multiple selection within
per-property browsing.
[0031] FIG. 15 is a flowchart of multiple selection by a property
sheet page browser.
DETAILED DESCRIPTION OF THE INVENTION
[0032] The preferred embodiment of the present invention extends
the capabilities of the per-property browsing method by allowing a
user to display and edit application defined properties for an
object. In addition, the preferred embodiment enables a user to
select several objects, to display the properties common to all of
the objects in a list, and to edit them. Moreover, the preferred
embodiment extends the capabilities of the property sheet page
method by allowing a user to display and edit application defined
property sheet pages. Also, the preferred embodiment of the present
invention enables a user to select several objects, to display the
property sheet pages common to all of the objects, and to edit
properties on the displayed property sheet pages. Furthermore the
preferred embodiment enables a user to switch between the
per-property browsing and property sheet page methods.
[0033] The preferred embodiment of the present invention is
practiced in an object-oriented environment that supports the
Microsoft OLE 2.01 protocol developed by Microsoft Corporation of
Redmond, Wash. In order to fully understand the preferred
embodiment of the present invention, it is helpful to review some
of the fundamental concepts employed within Microsoft OLE 2.01.
[0034] An "object class" is the definition of both a data structure
and functions that manipulate the data structure. An "object" is an
instance of an object class. An "interface" is a group of
semantically related functions that are organized into a named
unit. The name of the unit is the identifier of the interface.
Interfaces have no instantiation in that the interface does not
include code for implementing the functions that are identified in
the interface; rather, the interface specifies a set of signatures
for functions. "Instantiation" refers to the process of creating
in-memory structures that represent an object so that the
operations can be invoked on the object. When an object "supports"
an interface, the object provides code for the function specified
by the interface. Hence, an object that supports an interface is
responsible for providing the code for implementing the functions
of the interface. The code that is provided by the object must
comply with the signatures specified by the interface.
[0035] FIG. 3 is a block diagram of a computer system 1 which is
suitable for practicing the preferred embodiment of the present
invention. The computer system 1 includes a central processing unit
(CPU) 2 that is connected to a number of input/output devices,
including mouse 4, keyboard 10, and video display 12. The computer
system 1 also includes a network interface 6 for interfacing the
computer system with a network. Memory 8 stores data and code.
Specifically, memory 8 holds a copy of an operating system,
objects, a per-property browser, and a property sheet page browser.
A bus 14 connects the components of the computer system.
[0036] Before discussing the code and structures used to facilitate
the code, the user interface will be discussed. Specifically, FIGS.
4-7 represent sample user interfaces producing an illustrative
embodiment of the present invention, which will be described before
the flowcharts of FIGS. 8-5 are discussed.
[0037] FIG. 4 is an example of a user interface in which a
per-property browsing list 24 is displayed in accordance with the
preferred embodiment of the invention. The user interface includes
a per-property browser 22 that enables a user to browse the current
property values associated with properties of an object. The
per-property browser 22 is within a window 20 that is produced by a
development environment The development environment is a set of
resources made available to the user of a system which includes
code providing system defined interfaces. The per-property browser
22 is part of the development environment, and it provides the
framework within which a per-property browsing list 24 is
displayed. Each element in the per-property browsing list 24
includes a property name 26, a current property value 28, a drop
down list button 30, and a property sheet page map button 32. The
per-property browsing list 24 has system defined properties. The
per-property browser 22 enables a user to add application defined
properties to the per-property browsing list 24. Then, the
per-property browser 22 displays both the system defined properties
and the application defined properties in the per-property browsing
list 24. For instance, the per-property browsing list 24 has the
property name 26 "Font Name" and the current property value 28
"Roman."
[0038] A user may search through the per-property browsing list 24
by depressing arrow keys on the keyboard 10. As the user depresses
the arrow keys, the currently selected property is incremented so
that the next property in sequence is selected. A visual cue to the
user, such as highlighting, is generally provided to identify the
currently selected property. In addition, a user may search through
the per-property browsing list by using the scroll bar 33. The
scroll bar 33 has a scroll box 34, a scroll down arrow 35, and a
scroll up arrow 36. In order to use the scroll bar 33, the user
points at the scroll box 34 with a user pointing device, such as a
mouse 4, and while pointing at the scroll box 34, enters a user
selection indicator, such as a click of a designated mouse button.
Then, while keeping the mouse button depressed, the user may drag
the scroll box 34, up or down, to view different portions of the
per-property browsing list 24. A mouse is a user pointing device,
which has one or more mouse buttons, and clicking on a mouse button
outputs a user selection indicator which selects the element
pointed at by the mouse. In order to scroll the per-property
browsing list 24 by a single element, either up or down, a user may
use a mouse to point at the scroll up arrow 35 or scroll arrow down
36 and click a designated mouse button. Additionally, if a user
uses a mouse to point at the scroll up arrow 35 or scroll down
arrow 36, and keeps the mouse button depressed, the scrolling
continues until the mouse button is released. This allows a user to
quickly scroll through the per-property browsing list 24. An
element may be selected from the per-property browsing list 24 by
pointing at it with a mouse 4 and clicking a designated mouse
button. For the following discussion, "mouse" will be used in place
of "user pointing device," but one skilled in the art would
appreciate that other user pointing devices would be
equivalent.
[0039] After selecting a property, a user may activate the property
sheet page map button 32 to switch to a corresponding property
sheet page that displays values of the property group containing
the selected property. The, property sheet page map button 32 may
be activated by using a pointing device, such as a mouse 4, to
point at the property sheet page map button 32 and by entering a
user selection indicator, such as a click on a designated mouse
button. In addition, a user may activate the drop down list button
30 to view a drop down list, which contains other possible values
for the selected property. Any drop down list button may be
activated just as the property sheet page map button is
activated.
[0040] FIG. 5 is an example of a user interface in which a
per-property browsing drop down list 37 is displayed as it appears
in the preferred embodiment of the invention. A drop down list 37
is displayed when the drop down list button 30 has been activated
for a particular property. The drop down list 37 shows other
possible values for the property. For instance, when the property
name 26 is "Font Name" and the current property value is "Roman"
28, the drop down list 37 indicates that other possible values
include "Modem" and "Script." By using the scroll bar 38, as
discussed above, or by depressing the page up or page down keys on
the keyboard 10, a user may scroll through the possible values. An
element may be selected from the drop down list 37 by pointing at
it with a mouse 4 and clicking a designated mouse button. In
addition, an element may be selected by depressing the arrow keys
on the keyboard 10 in order to move to the desired element When an
element is selected from the drop down list 37, the element
replaces the current property value. For instance, if the element
"Modem" were selected, it would replace "Roman" as the current
property value. In the following discussion, each drop down list
may be, scrolled in this manner and elements in the drop down list
may be selected as described here.
[0041] FIG. 6 is an example of a user interface in which an
application defined property sheet page 44 is generated in
accordance with the preferred embodiment of the invention. A
property sheet page browser 42 is within a window 40. The property
sheet page browser 42 is part of the development environment, and
it provides the framework within which an application defined
property sheet page 44 displays itself. The property sheet page
browser 42, contains a tab 45 which identifies a property group.
For instance, tab 45 indicates that the property sheet page is the
"Font" property group. Other tabs 46 are also displayed alongside
tab 45 in such a way that the display resembles a set of tabbed
index cards. The other tabs 46 represent other property groups
associated with a particular object. The application defined
property sheet page 44 contains various properties of an object
which may be displayed and edited. For example, the "Font" property
group 45 has property names "Font Name" 47 and "Font Size" 52. The
property name "Font Name" 47 has a current property value 48 and a
drop down list button 49. When the drop down list button 49 for
"Font Name" is activated by a user, the drop down list 50 for "Font
Name" 47 is displayed. The drop down list 50 shows other possible
values for the "Font Name" property. Similarly, the property name
"Font Size" 52 has a current property value 53 and a drop down list
button 54, which when activated displays a drop down list with
other possible size values. In addition the property sheet page
browser 42 has an OK button 55, a CANCEL button 56, and an APPLY
button 57. Each button may be activated as the drop down list
button is activated. Additionally, a user may select one of these
buttons using a tab key to move to the button, and a user may
activate the button by depressing the enter key on the keyboard 10.
The OK button applies any modifications the user made while editing
and closes the property sheet page browser. The CANCEL button does
not apply any modifications the user made while editing and closes
the property sheet page browser. The APPLY button applies the
modifications the user made, while editing the property sheet page,
to the object or objects associated with the application defined
property sheet page.
[0042] FIG. 7 is an example of a user interface in which a window
60 containing menu options is displayed in accordance with the
preferred embodiment of the invention. The window 60 contains a
menu bar 62 with a number of menu options. A user may select the
"File" menu 64. When the "File" menu is selected, a drop down menu
66 is shown. The drop down menu 66 contains elements relating to a
file, including the element Properties 68. A user may select an
element in a drop down menu in the same manner as selecting an
element in a drop down list. A user may select Properties 68 in
order to display and edit a property. Selecting Properties will
enable a user to then display and edit properties of an object
using either the per-property browsing method or the property sheet
page method.
[0043] Now that the user interfaces have been discussed, the
following discussion will be directed to code. First, however, it
may be useful to discuss the interfaces that enable per-property
browsing and property sheet page browsing. The per-property browser
calls the IPerPropertyBrowsing interface. The object having
application defined properties supports the IPerPropertyBrowsing
interface. The property sheet page browser calls the
ISpecifyPropertyPages interface, the IPropertyPage interface, and
the IPropertyPageSite interface. An application defined property
sheet page supports the IPropertyPage and the IPropertyPageSite
interfaces. An object supports the ISpecifyPropertyPages interface.
These interfaces will be discussed below.
[0044] Before discussing the interfaces used by the per-property
browser and property sheet page browser, it is useful to review
some fundamental concepts of the Microsoft OLE 2.01 protocol.
IUnknown is an interface that all objects must support by
definition to comply with Microsoft OLE 2.01. One function
identified in the IUnknown interface is the QueryInterface ( )
function. When called, the QueryInterface function retrieves a
pointer to an interface that is identified by an input parameter
that is passed to the function. By using the QueryInterface ( )
function on an object, the per-property browser and the property
sheet page browser can switch between interfaces provided by that
object, and thus call functions within the different interfaces
supported by that object in order to provide per-property browsing
and property sheet page browsing on that object
[0045] FIG. 8 is a flowchart that provides an overview of the steps
performed to add application defined properties to a per-property
browsing list for an object. The per-property browser first obtains
the type of the application defined property (step 70) by using the
TypeInfo interface defined by Microsoft OLE 2.01 and implemented by
an object. Then, the per-property browser calls the QueryInterface
( ) function on the object that has the application defined
property to obtain a pointer to the IPerPropertyBrowsing interface
provided by the present invention (step 72). The
IPerPropertyBrowsing interface is defined as follows in C++.
[0046] interface IPerPropertyBrowsing:IUnknown {
[0047] GetDisplayString(DISPID dispid, BSTR FAR* lpbstr);
[0048] MapPropertyToPage(DISPID dispid, LPCLSID lpclsid);
[0049] GetPredefinedStrings(DISPID dispid, CALPOLESTR FAR*
lpcaStringsOut, CADWORD FAR* IpcaCookiesOut);
[0050] GetPredefinedValue(DISPID dispid, DWORD dwcookie, VARIANT
FAR* lpvarOut); };
[0051] The GetDisplayString ( ) function retrieves a character
string representing the current value of the application defined
property to be displayed. The MapPropertyToPage ( ) function
enables switching from a per-property browsing list to a property
sheet page containing the particular property. In particular, this
function maps the property to a property sheet page. The
GetFredefinedStrings ( ) function and GetPredefinedValue ( )
function return possible values for a property, along with display
names for the values.
[0052] After obtaining the pointer to the IPerPropertyBrowsing.
Interface, the per-property browser calls the GetDisplayString ( )
function to obtain the current property value of the property (step
73). Once the per-property browser has the property type and
property value, the per-property browser can add these application
defined properties to a per-property browsing list along with
system defined properties (step 74).
[0053] FIG. 9 is a flowchart of the steps performed by the
per-property browser when either the drop down list button or the
property sheet page map button have been activated. First, the
per-property browser receives user input which indicates which step
the per-property browser should take next (step 80). Then the
per-property browser determines whether the user input is a request
to activate a drop down list button, which indicates a desire to
view the drop down list (step 82). If the user input requests
activation of the drop down list button, then the per-property
browser calls the GetPredefinedStrings ( ) function to obtain
character strings corresponding to the possible values of the
property (step 84). Then the drop down list is displayed (step 86).
If the user input is not a request to activate the drop down list
button, then the per-property browser determines if the user input
is a request to select an element in a drop down list which is
already displayed (step 88). If the user input is a request to
select an element, then the per-property browser calls the
GetPredefinedValue ( ) function to obtain the value corresponding
to the user's choice (step 90). Then this value replaces the
current property value (step 91). For example, if the per-property
browser receives user input requesting activation of the drop down
list button for a color property, which allows selection of a color
for text, then the per-property browser calls the
GetPredefinedStrings( ) function. The GetPredefinedStrings( )
function may return character strings such as "Red," "Blue," and
"Green," which correspond to possible values of the color property.
When the user selects one of these character strings, such as
"Red," the per-property browser calls the GetPredefinedValue ( )
function. The GetPredefinedValue ( ) function returns the actual
value corresponding to the selected character string, such as an
RGB value for the selected color "red."
[0054] Continuing with the flowchart, if the user input is not a
request to select an element, then the per-property browser
determines if the user input is a request to activate the property
sheet page map button (step 92). If the user input is a request to
activate a property sheet page map button, then the user desires to
view the currently selected property on a property sheet page. The
per-property browser calls the MapPropertyToPage ( ) function to
display the currently selected property on a property sheet page
(step 93). In particular, the per-property browser calls the
MapPropertyToPage ( ) function to obtain an application defined
property sheet page identifier for a property sheet page. Then, the
per-property browser invokes the property sheet page browser,
passing to it the class identifier returned by the
MapPropertyToPage ( ) function. Then, the property may be edited on
a property sheet page (step 94). If the user input is a request to
edit (step 95), then the per-property browser allows editing (step
94). Editing is done by moving to the current property value of a
property, using either arrow keys or a mouse, and then manually
changing the current property value. If the user input is anything
else, the per-property browser ignores the user input and loops to
receive more input.
[0055] FIG. 10 is a flowchart of multiple selection within
per-property browsing. Multiple selection allows a user to view the
common properties of several objects at once. First, the
per-property browser receives a plurality of objects (step 97).
Then, the per-property browser determines which properties the
objects have in common (step 98). Then the per-property browser
displays the common properties in a per-property browsing list
(step 99).
[0056] FIG. 11A and FIG. 11B show a flowchart that provides an
overview of the steps performed to add application defined property
sheet pages to a set of system defined property sheet pages for an
object. First, the property sheet page browser must obtain an
interface pointer to the ISpecifyPropertyPages interface of the
object whose properties are to be browsed (step 100). The
ISpecifyPropertyPages interface is defined as follows.
[0057] interface ISpecifyPropertyPages:IUnknown {
[0058] GetPages(CAUUID FAR* pPages); };
[0059] The GetPages function returns a list of identifiers to the
application defined property sheet pages associated with an object.
Once the property sheet page browser obtains the
ISpecifyPropertyPages interface pointer, the property sheet page
browser calls the GetPages ( ) function to obtain a list of
application defined property sheet page identifiers (step 102).
[0060] Using the application defined property sheet page
identifiers, the property sheet page browser adds each application
defined property sheet page to the current set of property sheet
pages, which already contain system defined property sheet pages.
The property sheet page browser selects the first application
defined property sheet page identifier (step 104). Then the
property sheet page browser creates an instance of an application
defined property sheet page for that application defined property
sheet page identifier (step 106). Next, the property sheet page
browser obtains an interface pointer to IPropertyPage, which is
supported by the application defined property sheet page (step
108). The IPropertyPage interface is defined as follows.
[0061] interface IPropertyPage:IUnknown {
[0062] SetPageSite(LPPROPERTYPAGESITE pPageSite);
[0063] Activate(HWND hwndParent, LPCRECT lprc, BOOL bModal);
[0064] Deactivate();
[0065] GetPageInfo(LPPROPPAGEINFO pPageInfo);
[0066] SetObjects(ULONG cObjects, LPUNKNOWN FAR* ppunk);
[0067] Show(UINT nCmdShow);
[0068] Move(LPCRECT prect);
[0069] IsPageDirty();
[0070] Apply();
[0071] Help(LPCOLESTR lpszHelpDir);
[0072] TranslateAccelerator(LPMSG lpMsg); };
[0073] The property sheet page browser calls the SetPageSite ( )
function to provide the application defined property sheet page
with the site object it should use to communicate with the property
sheet page browser. For instance, the application defined property
sheet page would use the site object to obtain information from the
property sheet page browser such as which language the application
defined property sheet page should use for displaying its contents.
The property sheet page browser calls the Activate ( ) function to
provide the application defined property sheet page with
information on where to display itself. The property sheet page
browser calls the Show ( ) function to display the application
defined property sheet page or to hide it. The property sheet page
browser calls the Deactivate ( ) function to destroy the resources
created by a preceding call to the Activate ( ) function. The
property sheet page browser calls the GetPageInfo ( ) function to
obtain information about the application defined property sheet
page, such as the application defined property sheet page size and
whether the application defined property sheet page supports the
help function. The property sheet page browser calls the SetObjects
( ) function to pass to the application defined property sheet page
a set of objects so that the application defined property sheet
page knows what objects to get property values from and apply
modifications made by a user while editing to (e.g., in case of
multiple selection, multiple objects are passed). The property
sheet page browser calls the Move ( ) function to move or resize
the application defined property sheet page. The property sheet
page browser calls the IsPageDirty ( ) function to determine if the
user modified the application defined property sheet page. If
modifications were made, then the property sheet page browser
enables the Apply button. The property sheet page browser calls the
Apply ( ) function to tell the application defined property sheet
page to apply modifications to objects. The property sheet page
browser calls the Help ( ) function to display help information
about the application defined property sheet page. The property
sheet page browser calls the TranslateAccelerator ( ) function to
communicate certain window messages with the application defined
property sheet page.
[0074] After obtaining the IPropertyPage interface pointer, the
property sheet page browser calls the GetPageInfo ( ) function to
obtain application defined property sheet page information (step
110). This information is stored in the following data
structure.
[0075] typedef struct tagPROPPAGEINFO {
[0076] size_t cb;
[0077] LPOLESTR pszTitle;
[0078] SIZE size;
[0079] LPOLESTR pszDocString;
[0080] LPOLESTR pszHelpFile;
[0081] DWORD dwHelpContext; }PROPPAGEINFO;
[0082] This application defined property sheet page information
includes pszTitle, which is the title of the application defined
property sheet page, size, which is the application defined
property sheet page size, and pszhelpfilehich is a help file for
the application defined property sheet page.
[0083] Next, the property sheet page browser determines the
location of the application defined property sheet page (step 112)
on the display. The property sheet page browser provides this
location information to the application defined property sheet page
(step 114). The property sheet page browser then calls the
SetPageSite ( ) function to give the application defined property
sheet page a means of communicating with the property sheet page
browser (step 116). After this, the property sheet page browser
calls the SetObjects ( ) function to provide the application
defined property sheet page with the set of objects to which it
applies modifications made by a user (step 118). That is, more than
one object may support the same application defined property sheet
page, and if this is the case, then an application defined property
sheet page which is modified applies the modifications to each
object which supports the application defined property sheet page.
Following this, the property sheet page browser calls the Activate
( ) function to activate an application defined property sheet page
(step 120). Next, the property sheet page browser calls the Show (
) function to display the application defined property sheet page
(step 122). Once the Show ( ) function is called, the application
defined property sheet page appears to be at the front of what
appears to be a set of tabbed index cards. Then the property sheet
page browser determines whether there are more application defined
property sheet page identifiers (step 124), and if there are, it
selects the next application defined property sheet page identifier
and processes it to add another application defined property sheet
page to its set of property sheet pages (step 126), else it
returns.
[0084] FIG. 12 is a flowchart that provides the steps performed to
edit properties on an application defined property sheet page.
First, the application defined property sheet page obtains a
pointer to the IPropertyPageSite interface, which is supported by
the application defined property sheet page (step 140). The
IPropertyPageSite interface is defined as follows.
[0085] interface IPropertyPageSite:IUnknown {
[0086] OnStatusChange(DWORD flags);
[0087] GetLocaleID(LCID FAR* pLocaleID);
[0088] GetPageContainer(LPUNKNOWN FAR* ppUnk);
[0089] TranslateAccelerator(LPMSG lpMsg); }
[0090] The application defined property sheet page calls the
OnStatusChange function to inform the property sheet page browser
that the user made modifications while editing. The application
defined property sheet page calls the GetLocaleID ( ) function to
learn what language to use for displaying its, contents. The
application defined property sheet page calls the GetPageContainer
( ) function to get access to the per-property browser if the
application defined property sheet page has some special knowledge
about what interfaces are supported by the property sheet page
browser. The property sheet page calls the TranslateAccelerator ( )
function to communicate certain window messages with the property
sheet page browser.
[0091] Continuing with the flowchart, when the user has modified an
application defined property sheet page, the property sheet page
informs the property sheet page browser that the user modified the
application defined property sheet page by calling the function
OnStatusChange ( ) (step 142). In response to this, the property
sheet page browser calls the IsPageDirty ( ) function to confirm
that the user has made a change (step 144). If the user has made a
change to the property sheet page, the property sheet page browser
enables the Apply button (step 146). When the Apply button is
enabled, if a user selects the Apply button, the modifications the
user made, while editing, to the application defined property sheet
page are applied to the set of objects supporting that application
defined property sheet page. After enabling the Apply button, the
property sheet page browser determines whether the user activated
the apply button (step 148). If the user did activate the apply
button, then the property sheet page browser calls the Apply ( )
function (step 150), else it returns. Calling the Apply ( )
function tells the application defined property sheet page to apply
the modifications to the set of objects it received from the
SetObjects ( ) function (step 118 of FIG. 11B).
[0092] FIG. 13 is a flowchart of the property sheet page browser
when it enables switching from an application defined property
sheet page to a per-property browsing list. A particular
application defined property sheet page implements the user
interface for a per-property browsing list (step 170). Then, the
property sheet page browser determines whether a user requested the
per-property browsing list (step 172). If a user did request the
list, the property sheet page browser calls the Show ( ) function
to show the application defined property sheet page which
implements the user interface for a per-property browsing list
(step 174), else it returns.
[0093] FIG. 14 is a flowchart of multiple selection within
per-property browsing. Multiple selection allows a user to view the
common application defined properties of several objects at once.
Fi the property sheet page browser receives a plurality of objects
(step 180). Then, the property sheet page browser determines which
application defined properties the objects have in common (step
182). Then the property sheet page browser displays the common
application defined properties on a per-property browsing list
(step 184).
[0094] FIG. 15 is a flowchart of multiple selection by a property
sheet page browser. Multiple selection allows a user to view the
common properties of several objects at once. First, the property
sheet page browser receives a plurality of objects (step 190).
Then, the property sheet page browser determines which property
sheet pages the objects have in common (step 192). Then the
property sheet page browser displays the common property sheet
pages (step 194).
[0095] Although the methods and systems of the present invention
have been described in terms of a preferred embodiment, it is not
intended that the invention be limited to this embodiment.
Modifications within the spirit of the invention will be apparent
to those skilled in the art The scope of the present invention is
defined only by the claims that follow.
* * * * *