Various electronic document production systems have been developed that allow for adding one or more objects, such as fonts, tables, and drawings, to a document. Such systems typically provide methods for modifying various properties associated with a given object (herein known as “object editing”). This process of object editing is generic to a number of products and is applicable to any program where it is possible to set the properties of an object. As an example, a word processor application allows a user to change the font properties of the text in a document. In such an application, the set of potentially editable objects is often static, and is known at the time the system is built. While the static nature is effective for the aforementioned products, it is overly limiting to the purposes of other products. Thus, other systems have been developed that offer an ability to modify properties for a dynamic set of objects. However, such dynamic property modification may lead to an unwieldy user interface and the inefficiencies associated therewith.
Described herein are, among other things, techniques for adding property editors for objects (herein called “object editors”) for objects dynamically added to software applications. For example, in a word processing application, text fonts may be objects shipped with and built-in to (herein called “original properties”) the application. If the word processing application allowed dynamically adding objects, a user may, for example, be able to add a rectangle object, which would allow the user to place a rectangle into a document created by the word processing application. Because the rectangle object was dynamically added; it was not originally included with the word processing application; it may be necessary to provide a way to edit the width, height, location, fill color, line width, line colors, or any other properties exposed, or available to edit, by the rectangle.
In accordance with one implementation presented herein this functionality is provided by allowing the creation of categories of properties, and using these categories to provide suitable object editors for properties of the added object. In this example, there may be a “layout” category that would be associated with the size and location properties, while there may be a color category associated with the fill color and line color properties. An object editor could then be created based on the properties and the categories with which they are associated. A layout category associated with the width property may result in an object editor displaying a width of the rectangle in a text box control, allowing a user to view or edit the width by typing a value, for example. The fill color and line color, as another example, may be viewed and edited with a control based on a color wheel control. Each of the properties exposed by the rectangle that have categories associated may use an appropriate control for an associated category.
Because some categories of properties may not be included when the original application was created, a category editor may be used to associate appropriate controls to categories of properties. A category editor, for example, may allow the creation of a category of circular objects. A category of circular objects may be associated with properties for defining a circle, such as the center, diameter, fill color, line color, x coordinate of the center, y coordinate of the center, and the like. The category editor would allow associating an appropriate control to each of the exposed properties, for example a text box for diameter, color wheel for fill color, and so on. If an object is then created that includes a circle and another object, such as a rectangle as described above, an object editor may be provided which uses information from both the circle category and the rectangle category to allow editing of any exposed properties.
A further understanding of the various embodiments of the present invention may be realized by reference to the figures, which are described in remaining portions of the specification. In the figures, like reference numerals are used throughout several drawings to refer to similar components. In some instances, a sub-label consisting of a lower case letter is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components.
a-2c provide a graphical example of the processes set forth in relation to
a-4d provide a graphical example of the processes set forth in relation to
Various embodiments of the present invention provide techniques to logically group editable or otherwise accessible object properties in an extensible manner. In some cases, embodiments may further provide an ability to customize editors that display one or more properties that have been logically grouped. Such grouping may be associated with a user interface that, among other things, aids a user in efficient development. Such user interfaces may be presented as category editors that include one or more properties within a logically defined category. In some cases, such user interfaces may include a number of category editors assembled into a unified object editor. Such a unified object editor allows a user to accesses a number of object properties spanning different categories via a common user interface.
Some embodiments of the present invention provide methods for assembling object properties. Such methods include receiving an object identification that indicates an object, and receiving a property associated with the object. As used herein, the term “object” is used in its broadest sense to mean any element associated with an electronic document, electronic presentation, electronic design, or the like. Thus, as just some of many examples, an object may be a group of text included in an electronic document, a graphical image included in an electronic design, a layout element included in an electronic print layout. Based on the disclosure provided herein, one of ordinary skill in the art will recognize a variety of objects that may be manipulated using the various embodiments of the present invention. As used herein, the term “property” is used in its broadest sense to mean a characteristic of an object. Thus, as just one example, a property may indicate visible features such as the size and color of an object. As another example, a property may indicate a non-visible feature such as an argument that may be associated with an object, or an interaction between the object defined by the property and other objects. Based on the disclosure provided herein, one of ordinary skill in the art will appreciate that there are many properties and property types that may be used in relation to embodiments of the present invention.
In the aforementioned methods, a property category identification is performed that identifies a property category associated with the aforementioned property, and the property is dynamically associated with the identified property category. As used herein, a “property category” is interpreted in its broadest sense to mean any grouping of one or more properties that applies to a number of objects without being specific to one single object. Thus, a property category may be, but is not limited to, a category of properties related to the layout of objects or a category of properties related to the color or fill features of objects. Based on the disclosure provided herein, one of ordinary skill in the art will appreciate a variety of property categories that may be defined that allow for grouping one or more properties used in relation to defining objects. As used herein, the term “dynamically” is used in its broadest sense to mean modification of an otherwise static element or application. Thus, as just one of many examples, dynamically associating a property with a property category may include incorporating a new property in a preexisting property category. A preexisting property category may include one or more original properties, and may be augmented by newly defined properties. The phrase “original property” is broadly interpreted to mean any property that was incorporated in a product at the release thereof. The phrase “non-original” property is generally interpreted to mean any property that was incorporated into a product through a customization of the particular product or element. In some instances of the aforementioned embodiments, the methods further include providing a category editor that allows for modifying a plurality of properties associated with the property category. As used herein, the phrase “category editor” is used in its broadest sense to mean any tool that allows editing and/or viewing of information known to the particular editor. Various instances of the aforementioned embodiments further include combining two or more category editors into a unified object editor. As used herein, the phrase “unified object editor” is used in its broadest sense to mean any tool that allows editing and/or viewing of information about a particular object that is known to two or more category editors.
Turning to
It is determined whether one or more properties remain to be categorized (block 115). Where another property remains to be categorized (block 115), the next property is selected (block 125). It is then determined whether the selected property is associated with a particular category (block 130). In some cases, this may include identifying a category that incorporates a genre of properties to which the selected property relates. Alternatively, in some cases when a property is implemented in relation to an object, the category to which the property belongs is manually associated to the property. Where a particular category is identified for the property, the identified category is selected (block 140). Alternatively, where either a particular category cannot be determined or has not been assigned, a default category is selected for the property (block 135). As used herein, a “default category” is any category that is designated to associate with one or more properties that are not otherwise identified or associated with another category.
In addition, it is determined whether a category editor exists for the identified category (block 150). Such a category editor is a tool that provides access to properties associated with the category. In some cases, access to the category editor may include an ability to both modify and view all properties in a category. In other cases, access to the category editor may include an ability to modify some subset of the properties, and only to view another subset of the properties. In yet other cases, access to the properties may only allow for viewing the properties within the category. Where a category editor does not exist for the particular category (block 150), an ability to edit the associated properties is made available through a default editor (block 170). Alternatively, where a category editor does exist (block 150), it is determined if the current property is covered by the category editor (block 160). Where a property is covered by a particular category editor, the category editor is the exclusive tool used to modify the property. In some embodiments of the present invention, more than one tool may be used to modify a given property. In such cases, block 160 is not utilized as the process of identifying associated categories and category editors may yield multiple category editors that are each modified to allow access to the particular property. Where the current property is not covered by the category editor (block 160), access to the current property is made available through the default editor (block 170). Alternatively, where the current property is covered by the category editor (block 160), the current property is incorporated in the identified category editor (block 175). The category editor or default editor that received the current property is then updated such that the current property becomes accessible via the updated editor (block 180).
a-2c provide a graphical example of the processes of flow diagram 100. It should be noted that the discussion of
Turning to
In operation, object 200 is selected and properties 212, 214, 222, 232 are enumerated. The first of the enumerated properties (i.e., width property 212) is selected and it is determined whether the property is associated with a category editor. In this case, width property 212 is associated with, for example, a layout category editor. In turn, it is determined whether the associated layout category editor covers width property 212. In this case, width property 212 is covered by the layout category editor, thus, width property 212 is incorporated in the layout category editor that is updated to allow access to width property 212. In some cases, width property 212 may have already been incorporated in layout category editor as it is an original property. In turn, the same process is repeated for each of height property 214, fill color property 222 and fill pattern property 232. Ultimately, each of the aforementioned properties is identified as being associated with the layout category editor and the layout category editor is updated to allow access to each of the four properties.
Turning to
Other customized expressions of a category editor are possible in accordance with various embodiments of the present invention.
In some embodiments of the present invention, a user may create a category editor using default appearance characteristics without providing any input. In contrast, a user may select an application that allows creating a custom category editor. By creating such a custom category editor, a user is able to specify a layout for the rows of properties within the category editor. In one particular embodiment, the properties originally associated with an object all derive from a common base class. This base class may be used to provide much of the functionally required by controls that will be displayed in a visual layout, and does so by exposing a large set of properties. As an example, in one particular embodiment of the present invention, the following properties are all used to control the positioning of objects and/or elements thereof on a display: Width, Height, FlowDirection, HorizontalAlignment, VerticalAlignment, Margin, MinWidth, MinHeight, MaxWidth, MaxHeight, RenderTransform, RenderTransformOrigin, and LayoutTransform. There may also be additional properties that are context sensitive depending on how the element or object is used in the particular application. Further, in some cases, various properties operate on related properties. Such properties may be maintained in a tree such that the related or “children” properties are easily ascertained when a parent property is manipulated. In any event, a category editor may be defined that allows for modification of a variety of properties associated with a given object, and that maintains the relevant parent/child relationship between some of the properties. In some cases, parent/child properties may be presented in different category editors. In such cases, it may be desirable to present a user with both category editors whenever one is selected.
Turning to
Next, each category editor is incorporated in the unified object editor one at a time (block 320). This process of incorporating category editors into the unified object editor is repeated until each of the category editors has been incorporated (block 315). Once all of the category editors is incorporated into the unified object editor (block 315), the unified object editor is formatted and published to the user (block 325).
a-4d provide a graphical example of the processes of flow diagram 300. It should be noted that the discussion of
Turning to
In contrast, the other property sets include customized or added properties. In particular, property set 420 includes a customized or added fill color property 422 and property set 430 includes a customized or added fill pattern property 432. Property set 440 includes a customized or added row property 442; property set 450 includes a customized or added row span property 452; property set 460 includes a customized or added column property 462; property set 470 includes a customized or added column span property 472; and property set 480 includes a margin property 482. Each of the aforementioned properties may be editable and/or viewable via text boxes or pull down selector associated with the particular property.
In operation, object 400 is selected and properties 412, 414, 422, 432, 442, 452, 462, 472, 482 are enumerated. The first of the enumerated properties (i.e., width property 412) is selected and it is determined whether the property is associated with a category editor. In this case, width property 412 is associated with a layout category editor. In turn, it is determined whether the associated layout category editor covers width property 412. In this case, width property 412 is covered by the layout category editor, thus, width property 412 is incorporated in the layout category editor which is updated to allow access to width property 412. In some cases, width property 412 may have already been incorporated in layout category editor as it is an original property. The same process is then repeated for height property 414.
Fill color property 422 is then selected and it is determined whether a specific category editor is associated therewith. In this case, fill color property 422 is not associated with a specific category editor. Thus, fill color property 422 is incorporated into a default category editor that is designed to accept any non-associated properties. The same process is repeated for fill pattern property 432 that is also assigned to the default category editor.
The process is then repeated for row property 442 which is ultimately incorporated in the layout category editor. As each of the remaining properties (i.e., row span property 452, column property 462, column span property 472 and margin property 482) is also included in the layout category, the aforementioned process is repeated until each is incorporated into the layout category editor. While the present example utilizes only two categories (i.e., a layout category and a default category), one of ordinary skill in the art will recognize that embodiments of the present invention may be expanded to involve a number of properties respectively assigned to one of three or more categories.
Turning to
The different category editors may be assembled into a unified object editor. Assembling the category editors into the unified object editor may be done in accordance with a predefined category container 401 as depicted in
Such advanced features may be accessed by, for example, selecting an “advanced” button (not shown) that may be integrated into a particular category editor. By selecting the advanced button, additional features that are accessible in relation to the particular category are made accessible to a user. Such advance features may be, but are not limited to, features or properties that are less often used by any given user. The advanced features may be removed by pressing a “close” button (not shown) that is incorporated into a particular advanced category editor. Based on the disclosure provided herein, one of ordinary skill in the art will recognize a variety of advanced properties and/or features that may be made available to a user in relation to one or more category editors. In addition, it may be that one or more of the category editors has an associated advanced category editor and that others do not. Further, it should be noted that while category container 401 shows two distinct category editors and a default category editors, that other category containers may incorporate more category editors or fewer category editors in accordance with different embodiments of the present invention. Further, it should be noted that while category container 401 indicates that the various category editors will be presented one atop the other, other category containers may provide for a different presentation depending upon the particular implementation.
d depicts a unified object editor 451 formed using the layout defined by category container 401 and comprehending the two category editors 490, 495 developed in relation to object 400. In particular, unified object editor 451 includes a stacked presentation with layout category editor 490 stacked on top of default category editor 495. As such, each of the properties identified in relation to object 400 are accessible via unified object editor 451. As just one of many advantages that may be achieved using one or more embodiments of the present invention, a user may be given access to most if not all properties associated with a given object through using a single unified object editor. As another advantage of one or more embodiments of the present invention, the ability to load and combine category editors renders a system extensible. It is possible for any control author to provide a category editor for the properties declared on that control, and if their control is reused and extended through class inheritance, the designed category editor may be reused by the new control and may be combined with any category editors that are declared by that new control. Based on the disclosure provided herein, one of ordinary skill in the art will recognize other advantages that may be achieved using one or more embodiments of the present invention.
In conclusion, the present invention provides novel systems, methods and arrangements for providing access to object properties. While detailed descriptions of one or more embodiments of the invention have been given above, various alternatives, modifications, and equivalents will be apparent to those skilled in the art without varying from the spirit of the invention. Therefore, the above description should not be taken as limiting the scope of the invention, which is defined by the appended claims.