BACKGROUND
[0001] In some application scenarios, users wish to move data from one location to another, such as from one application to another application or from one website to another website. For example, in the browser context, a user may browse to a restaurant's website to read about the restaurant's menu selections. Once the user has decided to dine at that particular restaurant, they may then copy and paste the restaurant's address into a mapping web application form field in order to get directions to the restaurant. In these and other scenarios, there may be multiple fields to fill out, each of which requires a manual copy and paste operation. Needless to say, this places a burden on the user.
[0002] Some websites can host a control that permits copy and paste operations. This, however, not only places the burden of developing and hosting the control on the website designer, it also requires the web application to process the incoming data on a paste operation. Thus, the burden of supporting the copy and paste functionality is squarely placed on the website designer and web application.
SUMMARY
[0003] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
[0004] Various embodiments provide application-based, copy and paste operations. In one or more embodiments, an application, such as a web browser, supports copy and paste functionality thus enabling the user to easily move data from one location to another. The browser-based solution can thus relieve websites from having to include code that implements the copy and paste functionality.
J0005] In one or more embodiments, data that is subject to copy and paste operations is described in a structured and discoverable way. A user interface component can be utilized to inform the user of the presence of copy-able structured data on, for example, a web page or some other resource. Once the structure of the data is discovered, such as the data's data type, the destination location(s) to which the data can be pasted can be examined for form fields that correspond in some way to the data's structure. If a destination location includes form fields that support the data's structure, a user interface component can enable the user to paste the copied data into the appropriate form fields.
[0006] Other embodiments provide browser-based transforms that can be applied to data, including structured data, to enable the data to be transformed into formats that make it more widely available to other applications.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] The same numbers are used throughout the drawings to reference like features.
[0008] Fig. 1 illustrates a system in which various principles described herein can be
employed in accordance with one or more embodiments.
[0009] Fig. 2 illustrates an example web page that includes structured data in
accordance with one or more embodiments.
[0010] Fig. 3 illustrates an example web page having a visual copy indicator in
accordance with one or more embodiments.
[0011] Fig. 4 illustrates an example web page having example form fields in accordance
with one or more embodiments.
[0012] Fig. 5 illustrates the Fig. 4 web page with a visual paste indicator in accordance
with one or more embodiments.
[0013] Fig. 5a illustrates an example form in accordance with one or more
embodiments.
[0014] Fig. 6 is a flow diagram that describes steps in a copy and paste method in
accordance with one or more embodiments.
[0015] Fig. 7 illustrates an example system in accordance with one or more
embodiments.
[0016] Fig. 8 illustrates a flow diagram that describes steps in a method in accordance
with one or more embodiments.
[0017] Fig. 9 illustrates an example system in accordance with one or more
embodiments.
[0018| Fig. 10 illustrates an example computing device that can be used to implement
one or more embodiments.
DETAILED DESCRIPTION
Overview [0019] Various embodiments provide application-based, copy and paste operations. In one or more embodiments, an application, such as a web browser, supports copy and paste functionality thus enabling the user to easily move data from one location to another. The
browser-based solution can thus relieve websites from having to include code that implements the copy and paste functionality. That is, in various embodiments described below, the browser natively implements the copy and paste operations. [0020] In one or more embodiments, data that is subject to copy and paste operations is described in a structured and discoverable way. A user interface component can be utilized to inform the user of the presence of copy-able structured data on, for example, a web page or some other resource. Once the structure of the data is discovered, such as the data's data type, the destination location(s) to which the data can be pasted can be examined for form fields that correspond in some way to the data's structure. If a destination location includes form fields that support the data's structure, a user interface component can enable the user to paste the copied data into the appropriate form fields.
[0021] In one or more embodiments, the copy and paste functionality can provide for a single user action to execute a copy operation, and a single user action to execute a paste operation. These single user action copy operations can, in at least some embodiments, copy data having different data types at the same time. Likewise, these single user action paste operations can, in at least some embodiments, paste data having different data types at the same time, as will become apparent below. These embodiments can be employed in connection with any suitable type of application that utilizes or can utilize copy and paste functionality, an example of which is a web browser.
[0022| Other embodiments provide browser-based transforms that can be applied to data, including structured data, to enable the data to be transformed into formats that make it more widely available to other applications.
[0023J In the discussion that follows, a section entitled "Example System" describes but one system that can be utilized to practice the principles described herein in accordance with one or more embodiments. Following this, a section entitled "Example Structured Data" introduces the notion of structured data and describes some characteristics of structured data in accordance with one or more embodiments. Next, sections entitled "Copying Structured Data" and "Pasting Structured Data" describe, respectively, examples of how structured data can be copied and pasted in accordance with one or more embodiments. Following this, a section entitled "Transforms Associated With Structured Data" describes various transforms associated with structured data such as transforming structured data into other forms, as well as transforming content into structured data in accordance with one or more embodiments. Lastly, a section entitled "Transform Plug-In"
describes how different or newly-emerging data types can be handled in an extensible manner in accordance with one or more embodiments.
Example System [0024] Fig. 1 illustrates a system in accordance with one or more embodiments, generally at 100. System 100 includes a computing device 102 having one or more processors 104, one or more computer-readable media 106 and one or more applications 108 that reside on the computer-readable media and which are executable by the processor(s). The computer-readable media can include, by way of example and not limitation, all forms of volatile and non-volatile memory and/or storage media that are typically associated with a computing device. Such media can include ROM, RAM, flash memory, hard disk, removable media and the like. In addition, computing device 102 includes an application in the form of a web browser 110. Any suitably configured web browser can be utilized, examples of which are commercially available from the assignee of this document and others. One specific example of a computing device is shown and described below in Fig. 10.
[0025] In one or more embodiments, the web browser and/or other applications include or otherwise makes use of a copy and paste module 112 that functions as described above and below. The copy and paste module can comprise a native part of the application or browser, a plug-in that is subsequently added to the application or browser, and/or a standalone component that is used or otherwise leveraged by the application or browser. [0026] Although computing device 102 is illustrated in the form of a desktop computer, it is to be appreciated and understood that other computing devices can be utilized without departing from the spirit and scope of the claimed subject matter. For example, other computing devices can include, by way of example and not limitation, portable computers, handheld computers such as personal digital assistants (PDAs), cell phones and the like.
Example Structured Data
[0027] In one or more embodiments, data that is subject to the copy and paste functionality is so-called structured data. Structured data refers to data that is in a format that can be utilized by the copy and paste module 112. Structured data can be formatted in accordance with known or subsequently developed structured data standards, such as extensible Markup Language (XML) or HyperText Markup Language (HTML). For example, the structured data can be described in a web page's HTML in a manner that
identifies the data's particular data type. Specifically, in one or more embodiments, HTML tags can be utilized to associate a data type with a particular instance of data. Alternately or additionally, structured data can be formatted using other standards, both public and private without departing from the spirit and scope of the claimed subject matter. [0028] As an example, consider Fig. 2. There, a web page 200 includes a calendar event 202. In this particular instance, the calendar event is associated with three fields—a location field and two date fields, each of which is associated with a data type. These fields are described in the page's HTML 204 by, for example, suitable HTML tags such as the illustrated tags. Other methods and techniques can be used to associate data types with a web site's data. For example, the data types can be described in header information or other metadata that is associated with the page.
[0029] In the example just above, the structured data was specifically described as structured data through the web page's HTML. It is also possible, however, for data to not be specifically described as structured data, but to be subsequently processed and transformed into structured data. This is described in more detail below in the section entitled "Transforms Associated With Structured Data".
[0030] Having now discussed the general notion of structured data, consider now how structured data can be copied by the browser in accordance with one or more embodiments. It is to be appreciated and understood that the examples below utilize a web browser to illustrate various embodiments. Other applications can be utilized without departing from the spirit and scope of the claimed subject matter.
Copying Structured Data
[0031] In one or more embodiments, when a browser receives a web page, such as via the Internet, it parses the web page's HTML to ascertain whether there is any structured data contained in the page. Identifying structured data can be performed in any suitable way. For example, if the structured data is specifically described in the web page's HTML, as in the example above, identifying the structured data can be performed by examining the HTML itself In other instances where the data is not specifically described as structured data but yet resides in an ascertainable format, identifying the data as structured data can be performed by looking for characteristics or properties associated with the data and then transforming it into a structured format.
[0032] Once structured data has been identified on a web page, the browser can present a visual indicator to indicate the presence of structured data and that the structured data can
be copied. Any suitable visual indicator can be utilized and any suitable way of presenting the indicator can be used.
[0033] As an example, consider Fig. 3, which illustrates the Fig. 2 web page. Notice that along-side calendar event 202 a visual indicator 300 in the form of a copy icon is displayed. This indicator informs the user that the calendar event includes structured data that can be copied. In one or more embodiments, the icon can be displayed automatically when the page is rendered. In one or more other embodiments, the icon can be selectively displayed when, for example, the user hovers their cursor over or near the structured data. [0034] In one or more embodiments, if the user invokes a copy operation on the structured data by, for example, clicking on the visual indicator, the browser parses the structured data into individual fields and copies the structured data to the system's clipboard or another suitable location. The copied data is now available for pasting. [0035] In one or more embodiments, the browser's (or other application's) copy functionality can provide for a single user action to execute a copy operation after the copy icon is exposed. Specifically, in this example, if the user simply clicks on the copy icon, all of the structured data associated with that icon is selected and copied to the clipboard. That is, the single user action includes both selecting the content for copying and copying the content to the system's clipboard. This relieves the user from having to (1) physically select the content that is to be copied by, for example, executing a left click/drag operation, (2) executing a right click operation to expose a menu having a copy operation selection, and (3) selecting the copy operation.
[0036] Notice also that in some instances, this single user action can result in copying data having different data types at the same time. For example, calendar event 202 includes data having two different data types - a location type and a date type. By clicking on the copy icon, a copy operation is performed and both the location and date data are copied to the clipboard.
[0037] Having discussed an example copy operation, consider now how the browser can paste copied data in accordance with one or more embodiments.
Pasting Structured Data
[0038] When a user navigates to a website or web application, the browser ascertains whether the website or application supports structured data. For example, in the website scenario, the browser parses the HTML of the web page looking to see if the web page supports structured data. Specifically, in one or more embodiments, the browser can
examine the HTML of the web page looking to see if there are form fields that are marked
up with values that indicate data types for structured data. In the web application scenario,
the web application can communicate which types of structured data it supports through its
programmatic interaction with the web browser.
[0039] As an example, consider Fig. 4. There, an example web page 400 is shown with
three fields—a location field 402, a start date field 404 and an end date field 406. In this
web page's HTML, these fields can be marked up such that a data type is associated with
the individual field. Alternately or additionally, data types can be declared in the header of
the HTML or elsewhere in the HTML.
[0040] In one or more embodiments, when the browser finds data types on a web page
that match or are similar to data types of data contained on the system's clip board, the
browser can display a visual indication near the fields that indicates that paste capability is
available.
[0041] As an example, consider Fig. 5. There, the Fig. 4 web page is shown along with
a visual indication 500 in the form of a paste icon. Any suitable visual indication can be
used. In addition, any suitable manner of displaying the visual indication can be used. For
example, in some embodiments the visual indication can be displayed automatically when
the page is rendered. In other embodiments, the visual indication can be selectively
displayed when the user hovers their cursor near the appropriate fields.
[0042] Once the visual indication is displayed, the user can interact with it by, for
example, clicking on it. In one or more embodiments, when the user clicks on the visual
indication, the browser looks for properties or data types on the clipboard that correspond to
those on the web page and pastes the corresponding data in the appropriate locations. It is
to be appreciated and understood that other means of selecting the copy and paste icons can
be utilized, other than clicking, without departing from the spirit and scope of the claimed
subject matter.
[0043] As but one example of how a page's form fields can be marked up so that a
browser can make an association between the form field and structured data that has been
copied, consider Fig. 5a. There, a form 550 includes multiple different fields including
"What", "When", "Where", "Calendar" and "Description" fields. As an example of markup
that can be used to mark these fields up, consider the following: