Composite copy and paste for composite user interfaces

A selection of a composite copy command is detected via a computing device executing an application framework. The composite copy command is propagated to each active application associated with the application framework. A composite data element is received from each active application. The composite data element received from each active application is stored into a copy buffer.

BACKGROUND

The present invention relates to data copy and paste. More particularly, the present invention relates to composite copy and paste for composite user interfaces.

A copy function associated with a graphical user interface (GUI) of a conventional computing system allows a user to select individual elements to be copied to a portion of memory known as a clipboard. A copy function may be invoked by a keyboard key combination, such as the control key and the “C” key (e.g., CTRL-C). The individual elements may include a word in text form, a selected portion of text within a document, or other text elements. A paste function allows the user to copy a text element stored in the clipboard to another location, such as a location within the same or another document. A paste function may be invoked by a keyboard key combination, such as the control key and the “V” key (e.g., CTRL-V).

BRIEF SUMMARY

A method includes detecting, via a computing device executing an application framework, a selection of a composite copy command; propagating the composite command to each active application associated with the application framework; receiving a composite data element from each active application; and storing the composite data element received from each active application into a copy buffer.

A system includes a memory; and a processor programmed to: execute an application framework; detect a selection of a composite copy command; propagate the composite copy command to each active application associated with the application framework; receive a composite data element from each active application; and store the composite data element received from each active application into the memory.

A computer program product includes a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising: computer readable program code configured to execute an application framework; computer readable program code configured to detect a selection of a composite copy command; computer readable program code configured to propagate the composite copy command to each active application associated with the application framework; computer readable program code configured to receive a composite data element from each active application; and computer readable program code configured to store the composite data element received from each active application into a copy buffer.

DETAILED DESCRIPTION

The subject matter described herein provides composite copy and paste for composite user interfaces. A selection of a composite copy command is detected via a computing device executing an application framework. The composite command is propagated to each active application associated with the application framework. One or more composite data elements is/are received from each active application. The composite data element(s) received from each active application is/are stored in a copy buffer. In response to detection of a selection of a composite paste command, the stored composite data element(s) are retrieved from the copy buffer and provided to at least one application associated with the composite paste command.

Where more than one active application is associated with the composite copy command, each active application is identified and a composite data element is received from each active application. The separate composite data elements received from each active application are wrapped or hosted within a master data container (e.g., a compound composite data element) and stored to the copy buffer. For example, the data instance may be wrapped or hosted inside of an extensible markup language (XML) data model. Where more than one active application is associated with a composite paste command, one or more composite data elements and/or the compound composite data element, as appropriate, may be supplied to each active application. The active applications may process the provided data element based upon the respective application's ability to consume or convey the data element, or other considerations for the respective applications.

The composite copy and paste for composite user interfaces described herein may be applied to any composite user interface object. For example, an application framework may include a mashup application, a composite web application framework, one or more portlet applications, and a personal computer application framework executing multiple local or remote (e.g., client) applications. An application framework may also be associated with an embedded computing platform or a pervasive computing device (e.g., a mobile device). Many other examples of an application framework are possible and all are considered within the scope of the present subject matter. Copying and pasting underlying data models for applications within any such application frameworks may be performed using the present subject matter.

For purposes of the present description, a composite copy command or a composite paste command operates on one or more data elements. A data element may include data instances. Data instances represent fragments of extensible markup language (XML) or other formatted or structured data. Data instances may be used for data exchange or local data encapsulation, such as within a document. XML data instances may be leveraged for portability using the composite copy and paste command for composite user interfaces associated with the present subject matter.

Data instances may include individual records or entries, such as form data or individual data elements, respectively, captured or rendered in individual form data capture/rendering screens. The composite copy command may copy individual data instances, or portions of individual data instances. The data elements may be associated with one or more applications that are executed locally on a computing device or may be associated with one or more applications that are executed remotely on a server. Additionally, the data elements may be associated with applications that are operated partially on a local computing device and partially on a remote server. Namespaces, whether existing within an application environment, a corporate environment, or created for use with composite copying and pasting, may be used to identify individual data instances or elements.

A data model may include zero or more data instances. A data model may be organized in a flat or a hierarchical manner. A data model may include a single root node/instance with zero or more child data instances. A data model may include document-centric constructs, such as a document object model (DOM) or other construct. Alternatively, a data model may include system-level constructs, such as those utilized within an XML-enabled database.

In the context of mashups, web applications, portlets, and other composite user interfaces, data instance-level definitions may be combined (e.g., aggregated or concatenated) to form a combined data model representative of data within the individual applications that are represented. These combined data models may be represented in any format suitable for a given implementation, such as in an XML data format or other format. As such, a data model may be associated with a single application or multiple applications without departure from the scope of the present subject matter. The present subject matter may further be applied to document types, such as open and proprietary document formats, without departure from the scope of the present subject matter.

A composite copy command may copy individual data instances, individual data models, or portions of individual data instances or data models. A compound document architecture, such as that utilized in the model-view-controller (MVC) approach to user interface development represents one example of an environment where a data model may span multiple documents instances.

A composite paste operation operates upon individual data instances, individual data models, or portions of individual data instances or data models to provide a set of data to one or more active applications. The active application(s) may be provided with individual data elements of a data instance or data model, or may be provided with the entire data instance or data model, as appropriate for a given implementation.

Composite copy operations and composite paste operations may be invoked in a variety of ways. For example, a pop-up menuing structure may be used to present user options for copying and pasting data models and data instances. User selections may be detected and processing of the respective data models and data instances may be performed. Additionally, key combinations may be used and detected to invoke processing of the respective underlying data models and data instances. Other possibilities exist for user interface access to the functionality described herein and all are considered within the scope of the present subject matter.

By providing a composite copy and paste of either an entire data model or specific data instance(s), a number of steps required for client-side data reuse may be reduced. Further, complexity of user interface copy and paste operations may be reduced. Data integrity may be improved while reducing data entry errors. By operating at a data instance or data model level specified in either XML, comma separated values, or in some other appropriate data format, automated copying and pasting of data associated with electronic forms and entire data models may be performed.

For purposes of the present subject matter, a composite copy command and a composite paste command may be considered as data instance operations, where the underlying information associated with a given data instance is processed. As such, underlying information associated with user information components, sections, or elements may be operated upon by the respective composite command. For example, depending upon the underlying document format (e.g., web/portlet application, mashup, or other composite user interface), data may be obtained and processed as a single data instance, multiple discrete data instances, a single data model, multiple data models, or otherwise as appropriate for a given implementation.

Metadata associated with a data model or data instance may be utilized to identify individual data elements within the respective construct. These individual data elements may be extracted by a composite copy command and provided to another application by a composite paste command. As such, the composite copy and composite paste commands may selectively process data models and data instances by use of metadata that defines the organization of the respective constructs.

The following example pseudo code represents an example data model in an XML format.

As can be seen from the above example pseudo code data model, two data instances are represented, a “Customer_Info” data instance and a “Transfer Destination” data instance. For purposes of the present description, each of these data instances may be considered a data element that includes underlying data elements. Further, the entire data model may be copied and pasted using composite copy and paste commands to create a composite copied object that includes data from both data instances. Additionally, individual data elements of underlying data within the data instances may be copied and pasted using composite copy and paste commands. The granularity of the selection may be based upon any criteria appropriate for a given implementation, such as selection of a data field in a form to indicate copying of an underlying data element and selection of a location associated with a form to copy its associated data model including all underlying data instances and data elements. Many possibilities exist for selection of data models, data instances, and data elements, and granularity for composite copying and pasting and all are considered within the scope of the present subject matter.

Regarding the “Customer_Info” data instance, several data elements are associated with the various identifiers. For example, a “Customer_Name” identifier has a data element of “Lucky Stevens” associated with it. Similarly, a “Notification_Email” identifier has a data element lucky@vegas.com associated with it. As can further be seen from the example pseudo code, Lucky Stevens has an available balance of $600,017.83 and a collected balance of $17.83. As described above, the entire “Customer_Info” data instance may be copied and may encapsulate all underlying data elements. Alternatively, individual underlying data elements may be copied. Similar observations and processing may be associated with the “Transfer_Destination” data model and are not described herein for brevity.

It is further understood that certain industries have defined messages that access defined representations of data. In a broad sense, these are often referred to as industry (e.g., enterprise) standards. For example, the insurance industry and other industries have defined certain messaging structures for data access and retrieval. These or other messaging structures may be used to retrieve data for composite copying. These or other messaging structures may also be used to submit composite data or partitioned composite data to applications for paste operations of data instances or data models to the respective applications.

Example application environments within which the present subject matter may be applicable include a rich-client architecture where data resides on a client side (e.g., an application running on a desktop of a computing device or as a browser plug-in), a zero-footprint architecture where data resides on a server side, a single element mashup user interface/interaction flow architecture where data may reside on either a client side or a server side, a client-side data aggregation (e.g., cross-component) mashup interaction flow, and other application environments. It should further be noted that, with an understanding of how data is partitioned, stored, and accessed for a given application environment, the present subject matter may be applied to identify, receive, and combine the respective data elements for processing. As such, the present subject matter may be applied as appropriate within a given implementation of multiple application environments.

Composite copy and paste operations may further implement role-based access to copy and paste functionality. As such, only authorized users may be given access to composite copy and composite paste functions as appropriate for a given implementation. Further, audit or event trails may be maintained to provide traceability of aggregate copy and paste functionality. The composite copy and paste operations may further be enabled within specific applications, such as specific mashups or other composite user interfaces components, and disabled in other applications. Data access may be further restricted to client-side access, server-side access, or both as appropriate for a given implementation.

Data elements may further be selected for copying from separate composite data elements based upon configured selection criteria. For example, where multiple data elements are identified with similar names within multiple data objects, a time stamp associated with each data element may be determined and a newer of the two data elements may be received for composite copying and pasting. Further, a master data source application (e.g., a primary application in a multi-application environment) may be identified as an application from which to select information where a potential conflict between data elements is identified. A user identifier (ID) associated with each of the two data elements and a highest priority between the user identifiers may be determined (e.g., data associated with a department manager or administrator may be prioritized over other data users), and data associated with the identified highest priority user may be selected. Many other possibilities exist for composite copying and composite pasting and all are considered within the scope of the present subject matter.

The composite copy and paste for composite user interfaces described herein may be performed in real time to allow prompt copying and pasting operations of complex data objects for composite user interfaces. For purposes of the present description, real time shall include any time frame of sufficiently short duration as to provide reasonable response time for information processing acceptable to a user of the subject matter described. Additionally, the term “real time” shall include what is commonly termed “near real time”—generally meaning any time frame of sufficiently short duration as to provide reasonable response time for on-demand information processing acceptable to a user of the subject matter described (e.g., within a portion of a second or within a few seconds). These terms, while difficult to precisely define are well understood by those skilled in the art.

FIG. 1is a block diagram of an example of an implementation of a system100for composite copy and paste for composite user interfaces. A computing device102communicates via a network104with a server_1106through a server_N108. The server_1106through the server_N108may include any server or device that provides either an application interface or data storage for an application. For example, the server_1106through the server_N108may include web servers, portal servers, servers from which content for mashups may be accessed, or any other form of content or data servers.

As will be described in more detail below in association withFIG. 2throughFIG. 5, the computing device102provides automated composite copy and paste for composite user interfaces. The automated composite copy and paste for composite user interfaces is based upon accessing one or more data objects associated with an underlying data instance, data model, or a portion of an underlying data instance or data model associated with one or more single or composite applications. The accessed data object(s) are stored to a copy buffer and may be provided to one or more single or composite applications as a unit.

It should be noted that the computing device102may be a portable computing device, either by a user's ability to move the computing device102to different locations, or by the computing device102's association with a portable platform, such as a plane, train, automobile, or other moving vehicle. It should also be noted that the computing device102may be any computing device capable of processing information as described above and in more detail below. For example, the computing device102may include devices such as a personal computer (e.g., desktop, laptop, palm, etc.) or a handheld device (e.g., cellular telephone, personal digital assistant (PDA), email device, music recording or playback device, etc.), or any other device capable of processing information as described in more detail below.

The network104may include any form of interconnection suitable for the intended purpose, including a private or public network such as an intranet or the Internet, respectively, direct inter-module interconnection, dial-up, wireless, or any other interconnection mechanism capable of interconnecting the respective devices.

FIG. 2is a block diagram of an example of an implementation of the computing device102for performing automated composite copy and paste for composite user interfaces. A central processing unit (CPU)200provides computer instruction, execution, computation, and other capabilities within the computing device102. A display202provides visual information to a user of the computing device102and an input device204provides input capabilities for the user.

The display202may include any display device, such as a cathode ray tube (CRT), liquid crystal display (LCD), light emitting diode (LED), projection, touchscreen, or other display element or panel. The input device204may include a computer keyboard, a keypad, a mouse, a pen, a joystick, or any other type of input device by which the user may interact with and respond to information on the display202.

A communication module206provides interconnection capabilities that allow the computing device102to communicate with other modules within the system100, such as the server_1106through the server_N108, to access and store data elements. The communication module206may include any electrical, protocol, and protocol conversion capabilities useable to provide the interconnection capabilities. Though the communication module206is illustrated as a component-level module for ease of illustration and description purposes, it should be noted that the communication module206may include any hardware, programmed processor(s), and memory used to carry out the functions of the communication module206as described above and in more detail below. For example, the communication module206may include additional controller circuitry in the form of application specific integrated circuits (ASICs), processors, antennas, and/or discrete integrated circuits and components for performing communication and electrical control activities associated with the communication module206. Additionally, the communication module206may include interrupt-level, stack-level, and application-level modules as appropriate. Furthermore, the communication module206may include any memory components used for storage, execution, and data processing for performing processing activities associated with the communication module206. The communication module206may also form a portion of other circuitry described without departure from the scope of the present subject matter.

A memory208includes a copy buffer storage area210that stores copied data elements (e.g., data instances, data models, and portions of data instances and/or data models) within the computing device102. As will be described in more detail below, data elements stored within the copy buffer storage area210are used to provide composite data elements to applications within an application framework as a manageable unit.

It is understood that the memory208may include any combination of volatile and non-volatile memory suitable for the intended purpose, distributed or localized as appropriate, and may include other memory segments not illustrated within the present example for ease of illustration purposes. For example, the memory208may include a code storage area, a code execution area, and a data area without departure from the scope of the present subject matter.

A composite copy/paste module212is also illustrated. The composite copy/paste module212provides data element processing capabilities for the computing device102, as described above and in more detail below. The composite copy/paste module212implements the automated composite copy and paste for composite user interfaces of the computing device102.

Though the composite copy/paste module212is illustrated as a component-level module for ease of illustration and description purposes, it should be noted that the composite copy/paste module212may include any hardware, programmed processor(s), and memory used to carry out the functions of this module as described above and in more detail below. For example, the composite copy/paste module212may include additional controller circuitry in the form of application specific integrated circuits (ASICs), processors, and/or discrete integrated circuits and components for performing communication and electrical control activities associated with the respective devices. Additionally, the composite copy/paste module212may also include interrupt-level, stack-level, and application-level modules as appropriate. Furthermore, the composite copy/paste module212may include any memory components used for storage, execution, and data processing for performing processing activities associated with the composite copy/paste module212.

It should also be noted that the composite copy/paste module212may form a portion of other circuitry described without departure from the scope of the present subject matter. Further, the composite copy/paste module212may alternatively be implemented as an application stored within the memory208. In such an implementation, the composite copy/paste module212may include instructions executed by the CPU200for performing the functionality described herein. The CPU200may execute these instructions to provide the processing capabilities described above and in more detail below for the computing device102. The composite copy/paste module212may form a portion of an interrupt service routine (ISR), a portion of an operating system, a portion of a browser application, or a portion of a separate application without departure from the scope of the present subject matter.

A timer/clock module214is illustrated and used to determine timing and date information, such as timestamp information associated with data elements or individual items of data associated with data elements, as discussed above, to allow processing for selection of data elements/items where multiple items have similar names. As described above, a newer element may be selected for copying where multiple elements are similarly named. As such, the composite copy/paste module212may utilize information derived from the timer/clock module214for information processing activities, such as the composite copy and paste for composite user interfaces.

The CPU200, the display202, the input device204, the communication module206, the memory208, the copy/paste module212, and the timer/clock module214are interconnected via an interconnection216. The interconnection216may include a system bus, a network, or any other interconnection capable of providing the respective components with suitable interconnection for the respective purpose.

While the computing device102is illustrated with and has certain components described, other modules and components may be associated with the computing device102without departure from the scope of the present subject matter. Additionally, it should be noted that, while the computing device102is described as a single device for ease of illustration purposes, the components within the computing device102may be co-located or distributed and interconnected via a network without departure from the scope of the present subject matter. For a distributed arrangement, the display202and the input device204may be located at a point of sale device, kiosk, or other location, while the CPU200and memory208may be located at a local or remote server. Many other possible arrangements for components of the computing device102are possible and all are considered within the scope of the present subject matter. Accordingly, the computing device102may take many forms and may be associated with many platforms.

FIG. 3throughFIG. 5below describe example processes that may be executed by devices, such as the computing device102, to perform the automated composite copy and paste for composite user interfaces associated with the present subject matter. Many other variations on the example processes are possible and all are considered within the scope of the present subject matter. The example processes may be performed by modules, such as the copy/paste module212and/or executed by the CPU200, associated with such devices. It should be noted that time out procedures and other error control procedures are not illustrated within the example processes described below for ease of illustration purposes. However, it is understood that all such procedures are considered to be within the scope of the present subject matter.

FIG. 3is a flow chart of an example of an implementation of a process300for automated composite copying of data elements for composite user interfaces. At block302, the process300detects, via a computing device executing an application framework, a selection of a composite copy command. At block304, the process300propagates the composite copy command to each active application associated with the application framework. At block306, the process300receives a composite data element from each active application. At block308, the process300stores the composite data element received from each active application into a copy buffer.

FIG. 4is a flow chart of an example of an implementation of a process400for composite copying of data elements for composite user interfaces. The process400may be associated with any application framework, including, among other application framework types, a mashup application, a composite web application framework, a portlet application, a personal computer application framework, and an embedded computing application framework.

At decision point402, the process400makes a determination as to whether a composite copy command has been detected. As described above, a composite copy command may be detected via a selection associated with a pop-up menuing structure that presents user options for copying and pasting data models and data instances. Additionally, key combinations may be used and detected to invoke processing of underlying data models and data instances associated with one or more applications. Other possibilities exist for user interface access to the functionality described herein and all are considered within the scope of the present subject matter.

When a determination is made that a composite copy command has been detected, the process400propagates the composite copy command to each active application associated with the application framework at block404. At block406, the process400requests data from each active application. It is understood that data may be received from active applications, either in association with an authentication request or without an authentication request. It should further be noted that the request for data at block406may include a request for an extensible markup language (XML) data instance or an XML data model from each active application. Additionally, receiving the data from each active application may include receiving the requested XML data instance or the requested XML data model from each active application. Further, fragments or portions of an underlying data element may be requested and received without departure from the scope of the present subject matter.

At decision point408, the process400makes a determination as to whether to an authentication request has been received in response to the request for data from any of the active applications. As described above, the processing described herein may be provided with configurable options for allowing only authorized users to have access to composite copy and composite paste functions. As such, each individual application may be configured to either require authentication or to allow access by any entity or computing device. In response to determining that an authentication request has been received from at least one of the active applications, the process400provides the requested authentication, such as a user identifier or other authentication criterion, to the requesting active application at block410.

When a determination is made at decision point408that no authentication request has been received (e.g., data is received without an authentication request), or that data has been received upon providing the requested authentication at block410, the process400receives a first data element at block412. It should be noted that the process400may receive multiple data elements from each active application without departure from the present subject matter.

At decision point414, the process400makes a determination as to whether a data collision has occurred with respect to the received data element(s) and any other received data element(s). A collision may occur, for example, when a same instance identifier (ID) is associated with multiple data elements. Additionally, a collision may occur when a same namespace is associated with multiple data elements. Regardless of the source of the collision, the process400merges the data elements together based upon metadata resolution for selection of one of the data elements associated with the collision, as described in more detail below. It is noted that it is assumed for purposes of the present example, that there will not be a collision for the first data element(s) received from the first active application. As such, a discussion of processing associated with an affirmative determination regarding a collision shall be deferred and described further below.

When a determination is made at decision point414that no collision has occurred, the process400encapsulates the received data element(s) into a compound composite data element at block416. At decision point418, the process400makes a determination as to whether all requested data has been received. When a determination is made that all requested data has not been received, the process400returns to block412to receive the next data element(s) and iterates as described above for receipt of additional data elements. As such, the process400provides for composite copying from one or more active applications.

Returning to the description of decision point414, when a determination is made that a received data element has caused a collision with another received data element, the process400selects either the previously encapsulated data element or the received data element based upon metadata associated with the respective data elements at block420. For example, the process400may make a determination to select one of the data elements based upon a timestamp resolution of timestamp metadata, based upon determination of a master data source (e.g., a configured master data source application), or based upon a user-data priority (e.g., a manager, administrator, or other user priority). It should further be noted that metadata may be configured to instruct the process400to prompt a user for resolution in the case of a collision. In such an implementation, a user may be prompted to resolve the collision at block420, such as by displaying conflicting element identifiers and associated data within pop-up dialog, and a user selection may be detected including an indication of which of the conflicting data elements to select to resolve the collision. Many other possibilities exist for resolution of data collisions based upon metadata associated with the respective data elements and all are considered within the scope of the present subject matter. Upon completion of the selection of either the previously encapsulated data element or the received data element(s) based upon metadata associated with the respective data elements at block420, the process400continues to block416and encapsulates the data element into a compound composite data element, and iterates as described above.

Returning to the description of decision point418, when a determination is made that all data has been received and encapsulated, the process400stores the composite data element to a copy buffer, such as the copy buffer storage area210, at block422, and returns to decision point402to await a new composite copy command.

As such, the process400provides for user authentication for composite copy commands. The process400also provides for encapsulation and various metadata-based collision resolution options for creating composite data elements. Many other variations on the processing described are possible and all are considered within the scope of the present subject matter.

FIG. 5is a flow chart of an example of an implementation of a process500for composite pasting of data elements for composite user interfaces. At decision point502, the process500makes a determination as to whether a composite paste command has been detected. As with the composite copy command associated with the process400ofFIG. 4, the composite paste command associated with the process500may be detected via a selection associated with a pop-up menuing structure that presents user options for copying and pasting data models and data instances. Additionally, key combinations may be used and detected to invoke processing of underlying data models and data instances associated with one or more applications. Other possibilities exist for user interface access to the functionality described herein and all are considered within the scope of the present subject matter.

When a determination is made that a composite paste command has been detected, the process500retrieves a stored composite data element from the copy buffer, such as the copy buffer storage area210, at block504. At decision point506, the process500makes a determination as to whether to partition the composite data element or whether to provide the composite data element as one object to one or more target applications associated with the composite paste command. When a determination is made not to partition the composite data element, the process500provides the composite data element to at least one application associated with the composite paste command at block508. The process500returns to decision point502to await another composite paste command.

When a determination at decision point506to partition the composite data element, the process500partitions a data element from the composite data element at block510. At block512, the process500provides the partitioned data element to at least one application associated with the composite paste command. At decision point514, the process500makes a determination as to whether additional data elements are associated with the composite data element. When a determination is made that additional data elements are associated with the composite data element, the process500returns to block510to partition another data element from the composite data element and continues iterating as described above for the remaining data elements. When a determination is made at decision point514that no additional data elements are associated with the composite data element, the process500returns to decision point502to await another composite paste command.

As such, the process500provides for retrieval of stored composite data elements. The process500further provides the encapsulated composite data element to one or more applications associated with the composite paste command. Alternatively, the process500partitions data elements from the encapsulated composite data element and provides the partitioned data elements individually to one or more applications associated with the composite paste command. It should further be noted that partitioned data elements may be provided to different applications without departure from the scope of the present subject matter. It should further be noted that the example process400ofFIG. 4and the example process500ofFIG. 5may be combined to form a single process, modified, or otherwise changed without departure from the scope of the present subject matter.

As described above in association withFIG. 1throughFIG. 5, the example systems and processes provide composite copy and paste for composite user interfaces. Many other variations and additional activities associated with composite copy and paste for composite user interfaces are possible and all are considered within the scope of the present subject matter.

Those skilled in the art will recognize, upon consideration of the above teachings, that certain of the above examples are based upon use of a programmed processor, such as the CPU200. However, the invention is not limited to such example embodiments, since other embodiments could be implemented using hardware component equivalents such as special purpose hardware and/or dedicated processors. Similarly, general purpose computers, microprocessor based computers, micro-controllers, optical computers, analog computers, dedicated processors, application specific circuits and/or dedicated hard wired logic may be used to construct alternative equivalent embodiments.