When designing the layout of user interface elements (window regions, controls, etc.), a designer canvas is often used and elements (also referred to herein as objects) are dropped onto the canvas. However, as the application is built and the area covered by the canvas is resized, it becomes difficult to get all the elements or objects to resize in an intelligent manner. Current approaches tend to be incomplete, complex, or opaque to the designer.
In addition, a user interface for designing a layout of user interface elements is often complex and confusing to a designer. Such a user interface often displays an overabundance of display elements which a designer may not understand. However, when the display elements are not provided, the designer may be more greatly confused due to a lack of an indication of available of controls to the designer.
Thus, there is a need for a system or method in which modification of user interface elements in a layout may be achieved simply and effectively while also providing a user-friendly control interface for the designer.
The following presents a simplified summary of the disclosure in order to provide a basic understanding to the reader. This summary is not an extensive overview of the disclosure and it does not identify key/critical elements of the invention or delineate the scope of the invention. Its sole purpose is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later.
In one example, a method or algorithm is provided for layout of objects in a grid structure. In this example, a grid is defined for placement of objects. Desired objects are placed in the grid. Also, layout of the objects may be performed in any number of modes. In one example, objects may be modified based on modifying the underlying grid in one mode while objects and the underlying grid may be modified independently in another mode.
In another example, display elements corresponding to layout or design functions may be displayed in one mode while the display elements may be hidden from view in another mode.
Many of the attendant features will be more readily appreciated as the same becomes better understood by reference to the following detailed description considered in connection with the accompanying drawings.
The present description will be better understood from the following detailed description read in light of the accompanying drawings, wherein:
Like reference numerals are used to designate like parts in the accompanying drawings.
The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present example may be constructed or utilized. The description sets forth the functions of the example and the sequence of steps for constructing and operating the example. However, the same or equivalent functions and sequences may be accomplished by different examples. Systems described herein are provided as examples and not limitations. As those skilled in the art will appreciate, the present examples are suitable for application in a variety of different types of computing systems.
The method or system disclosed herein is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The method or system may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The method or system may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 102 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 102 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 102. Combinations of the any of the above should also be included within the scope of computer readable storage media.
The system memory 106 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 110 and random access memory (RAM) 112. A basic input/output system 114 (BIOS), containing the basic routines that help to transfer information between elements within computer 102, such as during start-up, is typically stored in ROM 110. RAM 112 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 104. By way of example, and not limitation,
The computer 102 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 102 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer. The remote computer may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 102. The logical connections depicted in
When used in a LAN networking environment, the computer 102 is connected to the LAN 148 through a network interface or adapter 152. When used in a WAN networking environment, the computer 102 typically includes a modem 154 or other means for establishing communications over the WAN 150, such as the Internet. The modem 154, which may be internal or external, may be connected to the system bus 108 via the user input interface 144, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 102, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, remote application programs may reside on a memory device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
A method and system is described for placement, management, and manipulation of objects or elements in a layout. The objects may exist at design time during which time a user or designer may create a layout of objects in a document or may exist at runtime during which time an application may execute to create the document containing the layout of objects as specified by the designer during design time. Behavior of the objects during each of runtime and design time may be different.
In addition, the objects in the workspace and corresponding behaviors may be provided in any number of different modes during each of design time or runtime. For example, the layout may be provided in a grid mode in which an underlying grid structure is provided in which objects may be placed or manipulated. In this example, the layout may include a grid containing any number of rows and columns. In one example, the grid corresponds to a workspace area in which objects are arranged and placed. The grid or workspace may further be modified. For example, a size of a dimension of the grid or workspace may be altered. In additional any number or type of adornments or display elements may be provided corresponding to functionality of the grid or workspace.
The layout may also operate in a different mode from the grid mode. In another mode, e.g., canvas mode, different behavior of the grid or objects within the grid or different display elements may be achieved. For example, in one mode, modification of the size of a dimension of the grid may result in a particular type of behavior of objects placed within the grid while in another mode, the behavior may be changed. The different behaviors based on mode of operation are described in further detail below.
In another example, in one mode (e.g., grid mode), the user interface containing the grid or workspace may include any number or type of adornments or other display elements corresponding to formatting, functionality, or other relevant characteristics pertaining to management of grid and/or objects within the grid. Such display elements may not be visible on the display in another mode of operation (e.g., canvas mode). In another example, the display elements are not visible on the display in the other mode of operation (e.g., canvas mode), however, the functionality of the display elements are still present such that modification of the grid or objects within the grid comport with the functions corresponding to the non-visible display elements. Such display elements and corresponding functionality are described in more detail below.
The rows and columns of the grid may form any number of cells in which objects may be placed. Any of the objects positioned in the grid may occupy any number of cells.
Child elements (i.e., objects) are also illustrated in the example of
The intersection of rows and columns form a coordinate system in a virtual grid. The coordinates in the grid may represent positions of objects within each of the cells. Also, any object in a grid may occupy any number of cells in the grid. For example, an object may span multiple adjacent cells in a grid. In the example illustrated in
Objects may be modified via modification of the cells in which the objects reside. Hence, an object's layout behavior may be determined by settings for the cells containing the object. For example, a cell may be assigned a fixed size by specifying a fixed pixel width value (column width) and a fixed pixel height value (column height). Alternatively, a dimension of a row or column may be calculated or adjusted in a variety of ways. For example, a width of a column may be determined based on a desired width of objects within the column, a height of a row may be determined based on a proportion of remaining available space, etc. These are merely examples as any suitable method of determining a size of a dimension of a column, row, or cell of a grid may be used.
Also, objects within any of the cells of a grid may overlap. For example, any number of objects or portions thereof may occupy the same cell or subset of cells (e.g., objects 20 and 30 in
An object in the grid may have properties such as, but not limited to, grid coordinates of a bounding box of cells, margins of the bounding box, height of the object, width of the object, etc. Any of the parameters may be designated “auto” such that the “auto” dimensions take up as much space as is available to maintain appropriate ratios and positions. In this example, multiple objects may contribute to a particular dimension of multiple cells in the grid. If one object has an “auto” dimension, modification of the dimension of the grid may result in the “auto” dimension object being correspondingly modified while the other objects in which the dimension is not set to “auto” may remain substantially constant.
Rows or columns may be modified such that a size of any dimension of any of the rows or columns may be adjusted. Alternatively, any of the rows or columns or portion thereof may be fixed in size (i.e., the size may be set at a value that is not changed). Objects may be defined based on characteristics of the rows or columns of the grid. For example, a row, column, combination of multiple rows and/or columns, may be specified as a bounding box of any object. Any number of parameters may be specified for an object. For example, a specification of the object may also include a width of the object, height of the object, or margin (e.g., left margin, right margin, bottom margin, or top margin) of the object. Based on the indicated rows or columns or any other relevant parameter, the object(s) may be placed within the grid.
As described above in this example, an object may be arranged within a grid based on the rows, columns and gridlines of the grid. Any of the rows or columns of the grid may be specified in terms of size or proportion of dimensions. This may include, for example, a fixed size of a particular dimension of one or more rows or columns, a percentage value corresponding to a size of a dimension, a minimum or maximum size of a dimension, etc. In this example, modification of a size of a cell in the grid may result in a corresponding modification of a corresponding aspect of an object contained within the modified cell. For example, if an object is located within a cell and the width of the cell is increased or decreased, the width of the object contained within the cell may also increase or decrease proportionately.
In one example, row R2 of the grid 10 in
In this example, the layout may be achieved by configuring the rows and columns accordingly and configuring object relationships to the grid, including margins. A coordinate system may be used in which each of the cells may be defined, a distance between an edge of an object and the corresponding edge of a cell may be determined as the margin and the margin may further defined. The object relations may then be defined for the objects (e.g., objects 20, 30, 40, and 50). In another example, alignment may be a distinct property. For example, an object may be aligned on one side (e.g., on the left side) with a resulting margin on an opposite side (e.g., right margin of 20). In this example, the object may remain at least 20 pixels from the right side after modifications to the object. Hence, if the size of the object or grid is altered, the right margin of the object (i.e., distance from the right side of the object to the corresponding aspect of the grid) is maintained at least 20 pixels.
Determination of the object relations for the objects in this example may be accomplished in a variety of ways. For example, Object 20: grid location=(0,0)-(1,1) (this means that the object spans cell (0,0) to cell (1,1), as shown); margin=(10,10,10,10) (this means that the distance from an edge in each direction to its corresponding grid cell edge is 10 pixels) (note that the drawings are not to scale); width=auto; height=auto. Object 30: grid location=(0,0)-(10); margin=(20,20,20,10); width=auto; height=auto. Object 40: grid location=(0,1)-(0,1); margin=(20,10,auto,20); width=fixed (e.g., 100); height=auto. Object 50: grid location=(1,1)-(11); margin=(10,10,10,auto); width=auto; height=fixed (e.g., 40).
Explicit values may denote explicit measurements, and auto values may consume the remaining available space. It is contemplated that in various implementations, the margins could be specified for all sides, and then additional attachment flags could be added. Moreover, values requested by the child may not be achievable by the parent, in which case the grid canvas may handle overconstrained problems by returning an error message, for example, or revising the value so that it is valid, for example.
The grid or workplace may be generated during design time in a process in which a grid layout may be created using a minimum amount of user specification. The layout author or designer may be provided with the ability to define the layout shape and the layout dynamic behavior.
The objects may exist at design time during which time a user or designer may create a layout of objects in a document or may exist at runtime during which time an application may execute to create the document containing the layout of objects as specified by the designer during design time. Behavior of the objects during each of runtime and design time may be different. In addition, the objects in the workspace and corresponding behaviors may be provided in any number of different modes during each of design time or runtime. A user or designer may toggle between different modes for a different design experience.
In one example, design may be performed in a first mode.
An icon or other display element may be displayed in grid mode corresponding to the lock function. For example, a first icon may be displayed indicating that a margin is determined for a distance between an aspect of an object and a corresponding aspect of a grid bounding box while a second icon may be provided or displayed for indicating that a margin has been removed or is not set. As the example illustrated in
Any additional icons, adornments, or display elements may be provided or displayed in grid mode. For example, anchor points or anchor axes may be provided such that modification of a grid bounding box around an anchor axis may result in modifications of objects or cells in the grid around the axis.
Also, an icon 904 may be displayed indicating a characteristic of a row or column. In this example, icon 904 is displayed as illustrated in the example of
Another icon such as icon 906 may also be displayed for indicating that a row or column is locked such that a dimension or size of the row or column is fixed at a particular size. For example, icon 906 indicates that the second row is locked so that the height of the second row may remain substantially constant when the grid 901 is modified in size. For example, if the grid 901 is decreased in height, the height of the second row may remain substantially the same. The decrease in height may thus be accommodated in this example by a corresponding decrease in height of the first row. Similarly, if the grid 901 is increased in height, the height of the second row may also remain substantially the same such that the height of the first row (which is not locked in this example) may increase in proportion to the increase in height of the grid 901.
The icon 905 in this example may be displayed indicating the presence, placement, or location of an anchor axis. The icon corresponding to the anchor axis may further be removed from the display such that a user or designer does not visualize the icon even though the anchor functionality is still active. Another icon or display element may be provided for toggling between states of visibility of the icon or display element corresponding to the anchor functionality. For example, a toggle type icon 910 may be provided such that selection of the toggle type icon results in appearance of the anchor functionality icon and disappearance of the anchor functionality icon.
Also, sizing of rows and/or columns in the grid may be indicated while in grid mode. An icon, adornment, or display element may be provided and displayed corresponding to sizing of the rows and/or columns. Also, the icon or other display element may indicate behavior of the sizing of the rows and/or columns of the grid. For example, a width of a column may be fixed such that adjustments or modifications of the grid do not result in alterations of the width of the fixed column. In this case, an icon or display element may be displayed for indicating that the width of the column is fixed or locked. A user or designer may also cause the system to toggle between different states such that the icon or display element indicating a size functionality of a row or column is displayed when desired but may also be removed from the display (i.e., not displayed) when desired.
The grid 901 may further include handles for management or modification. For example, any number of icons or display elements (e.g., icon 908) may be displayed such that a user or designer may move or otherwise modify the grid 901. For example, a user or designer may drag a handle such as icon 908 to alter the size and/or shape of the grid 901.
The display may be changed to an alternate mode for different behavior. For example, a user or designer may select the grid icon 910 to toggle between different states or modes. By switching to a different mode, different functionalities may be obtain. For example, a system may be in grid mode as described above and may further receive a selection via the grid icon 910. The selection of the grid icon 910 may cause the system and display to change to another mode such as canvas mode. In canvas mode, a different set of icons or display elements may be displayed as compared to the interface in grid mode.
In another example, a subset of icons or display elements may be displayed in canvas mode during design time.
In addition, during design time, an interface may be provided in grid mode containing an underlying grid 1105 as illustrated in the example of
However, in another example, the system may be switched to an alternate (e.g., canvas) mode while in design time. In canvas mode during design time, the behavior may change such that any set or subset of icons may be simplified. In this example, any icons may be invisible to the user or designer by not displaying the icons on the display as described above. Also, a relationship of changes to characteristics of the grid to changes in corresponding changes to characteristics of objects within the grid may be different.
Similarly,
In addition, controls, icons, or other display elements may be displayed while in grid mode (STEP 1608). The display elements may indicate functionality of the grid structure. For example, the display elements may include icons or controls for setting margins, determining or defining a status of a grid cell or bounding grid box in relation to an object, size or behavior of a row or column of a grid, etc. Modification of the grid may result in setting new form dimensions (STEP 1609) and modification of objects within the grid accordingly as described.
Based on the input received (STEP 1601), the system or interface may enter canvas mode (“Yes” branch of STEP 1602). For example, a user or designer may select a control for toggling between modes such that the system or interface may switch from a grid mode to a canvas mode. In canvas mode during design time, controls or icons corresponding to functions of the grid may be hidden. Hence, in this example, the controls, icons or other display elements may be invisible to the user or designer during design time or run time. In this case, the display may not contain the icons or controls such that the display may provide an uncluttered appearance.
Alternatively or additionally, a subset of icons or display elements (e.g., simple controls) may be provided on a display while in canvas mode (STEP 1603). In this example, any desired subset of display elements selected from a set of display elements displayed during grid mode may be selected for display in canvas mode and unselected display elements may not be displayed in canvas mode and may remain invisible to or hidden from the user or designer while in canvas mode. In another example, a user or designer may select a control in canvas mode to display the set of display elements available or displayed in grid mode while in canvas mode, if desired.
Objects may be placed in the grid and the location of the placed objects may be recorded or stored (STEP 1604). In addition, the layout of the objects within the grid may also be stored (STEP 1605) including settings corresponding to the layout. In one example, the grid or workspace may be resized or otherwise modified. For example, new form dimensions may be set (STEP 1606) such that a workspace or grid may be resized relative to the objects placed within the workspace or grid. Responsive to resizing of the workspace or grid, the locations of the objects within the workspace or grid are reset relative to the resized workspace or grid (STEP 1607). In one example in canvas mode, the user or designer may perceive a resizing of the workspace or grid but perceives no substantial movement or modification of the objects placed in the grid or workspace at design time (see
It is understood that aspects of the present description can take many forms and embodiments. The embodiments shown herein are intended to illustrate rather than to limit the description, it being appreciated that variations may be made without departing from the spirit of the scope of the invention. Although illustrative embodiments have been shown and described, a wide range of modification, change and substitution is intended in the foregoing disclosure and in some instances some features may be employed without a corresponding use of the other features. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the invention.