CA2266635A1 - A web calendar architecture and uses thereof - Google Patents
A web calendar architecture and uses thereof Download PDFInfo
- Publication number
- CA2266635A1 CA2266635A1 CA002266635A CA2266635A CA2266635A1 CA 2266635 A1 CA2266635 A1 CA 2266635A1 CA 002266635 A CA002266635 A CA 002266635A CA 2266635 A CA2266635 A CA 2266635A CA 2266635 A1 CA2266635 A1 CA 2266635A1
- Authority
- CA
- Canada
- Prior art keywords
- calendar
- providing
- interface
- display
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/109—Time management, e.g. calendars, reminders, meetings or time accounting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S715/00—Data processing: presentation processing of document, operator interface processing, and screen saver display processing
- Y10S715/961—Operator interface with visual structure or function dictated by intended use
- Y10S715/963—Calendar or scheduling
Abstract
An architecture for facilitating Web based Calendar client side event scheduling and, the association process between Java calendar applet ("Capplet") and calendar event. Internet scheduling and calendaring groupware that coordinates group schedules. It features concurrent Capplets running within any of the four calendar grids, namely, monthly, weekly, multiple days and daily.
Description
CA 0226663~ 1999-03-22 WO 98tl3753 PCTrUS97/1738g WEB CALENDAR ARCHITEC~E AND USES THEREOF
Backqround of the Invention The invention begins with an intention to create a Java visual table widget (vTable) with Internet capability on the Web browser. It can be used by the programmers who need a table widget written in Java to organize data presentation. vTable is a programmable layout manager that supports data presentation in two dimensional grids, rows, columns and cells. vTable adopts model-view GUI paradigm, such that for each view object, there is a model ob~ect controlling its contents. There can be multiple views associated with a single model. So once the model's contents changed, all of the related views will be automatically refreshed with the new contents.
When it was completed, we felt a real Internet application that builds upon the visual table would serve to enhance the widget's interfaces and :Eeatures. The application of Web based Calendar came naturally, since every calendar view uses two dimensional table. Jigsaw puzzle was also in consideration, but was ruled out for it has no practical usage.
The calendar started off as a Web based personal organizer.
It provides daily events and appointments scheduling. To make our Web Calendar stands out from the others, we created the calendar-applet (~Capplet") architecture to support the multimedia event contents distribution and online registration. It features client side event ~ specification and the association between Capplet~ and event. To leverage on the Web's interconnection nature, we created group concept which represents a collection of individual canlendars. It allows the sharing and coordinating of events and schedules among a group of SU~STITUTE SHEET (RULE 26) CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 users. With the inclusion of group features, the Web calendar has grown from a personal organizer to a scheduling and calendaring groupware.
In addition, as we build the calendar applet, we had enhanced our Java GUI foundation library to support our GUI
needs. This includes specialized Layout managers, Panels, List controls and miscellaneous components. Layout manager organize its components geographical locations. Panel is a container that is contained within a container. All of these enhancements are necessary for the Web Calendar GUI
and are not provided by the Java language Abstract Windowing Toolkit (AWT).
The scope of the invention covers: 1) Java personal organizer, 2) Internet scheduling and calendar groupware, 3) Calendar event with multimedia effect, 4) Joint multiple calendars view, 5) Open calendar architecture that is ready to run any Java applet, 6) Invocation method for programs with display panels and 7) Internet transaction done directly through calendar events.
~he Internet and World Wide Web Internet The Internet is the name for a group of worldwide information resources. The roots of the Internet lie in a collection of computer networks that were developed in the 1970s. They started with a network called the Arpanet that was sponsored by the United States Department of Defense.
The original Arpanet has long since been expanded and replaced, and today its descendent form the global backbone of what we call the Internet.
It would be a mistake however to think of the Internet as a computer network, or even a group of computer networks CA 0226663~ 1999-03-22 WO 98/13753 PCTrUS97/1738g --3--connected to one another. The computer networks are simply the medium that carries the h~lge resource of practical and enjoyable information. The Internet allows mil~ions of people all over the world to communicate and to share. It is a people-oriented society.
Internet has a slew of services: Text file, Telnet session, Gopher, Usenet news group, File Transfer Protocol and the latest and greatest World Wide Web, each with either specialized information contents or specialized network functions.
Worl d Wide Web (WWW) The Web, one of Internet's many resources, was originally developed in Switzerland, at the CERN research center. The idea was to create a way for the CERN physicists to share their work and to use community information. This idea was soon embraced within the Internet as a general mechanism for accessing information and services.
Like many other Internet resources, the Web uses a client/server system. Users use a client program called a browser act as a window into the Web. From the point of Web, everything in the universe consists of either documents or links. Thus the job of a browser is to read documents and to follow whatever links users select. A
browser knows how to access just about every service and resource on the Internet, especially it knows how to connect to WWW servers that offer public hypertext documents.
In the language of the Web, a hypertext document is something that contains data and possibly, links to other documents. What makes the Web so powerful is that a link might go to any type of Internet resource. It is flexible and convenient to use.
CA 0226663~ 1999-03-22 WO 98/13753 PCTrUS9711738g The In terne t Pro tocol s The protocols that Internet hosts use to communicate among themselves are key components of the net. For the WWW, HTTP is the most important of these communication protocols. All documents on the WWW are referenced through a URL. And each URL begins with the name of the protocol, HTTP, that is used to find that document. A Web browser must have the HTTP capability built-in.
Java Java is a language developed by Sun with the intent to meet the challenge of application development in the context of heterogeneous network-wide distributed environments. And the paramount among these challenges is the secure delivery of applications that consume the minimum of system resources, can run on any hardware and software platform, and can be dynamically extended.
The massive growth of the Internet and the World-Wide Web leads us to a completely new way of looking at development and distribution of software. To live in the world of electronic commerce and distribution, the Java language supports secure, high-performance, and highly robust application development on multiple platforms in heterogeneous, distributed networks.
Operating on multiple platforms in heterogeneous networks invalidates the traditional schemes of binary distribution, release, upgrade, patch, and so on. To survive in this jungle, the Java language has to be architectural-neutral, portable, and dynamically adaptable.
To ensure the programmers can flourish within their software development environment, the Java language system that emerged to meet these needs is simple, so it can be CA 0226663~ 1999-03-22 WO 98/13753 PCTrUS97tl738g easily programmed by most developers, familiar, so that current developers can easily learn the Java language, objected oriented, to fit int:o distributed client-server applications, multithreaded, for high performance in applications that need to perform multiple concurrent activities, and interpreted, for maximum portability and dynamic capabilities.
Java vs. Procedural Languages At a fundamental level, procedure languages are designed first to provide programmers with a framework for issuing commands for the computer t:o execute (hence the term "procedura~") and second to allow programmers to organize and manipulate data. Depending on the language, how intuitively a procedural language on these two features very quite a bit. For examples, COBOL, FORTRAN and C are all procedural languages, but each has a specialized area and cannot be interchanged.
An object-oriented language like Java is designed first to allow programmers to define t:he objects that make up the program and data they contain, and second to define the code that makes up the program.
Many programmers are now using C++ or languages like Object Pascal, Perl 5.0, and Objective C. What these languages have in common is that they are hybrid languages, or procedural languages with object-oriented extensions.
These languages make it possible for programmers to use objects within their programs~ but they allow-and in many cases required-to use procedural code to accomplish certain ~ tasks.
~ava vs. Other Object-Oriented Languages A pure object-oriented language entails all data in the W098tl37S3 ~CT~S97/17389 language is represented in the form of objects. In SmallTalk, which is a pure object-oriented language, every aspect of the language is object- or message-based and all data types, simple or complex, are object classes.
Java implements the basic C simple data types, such as integer, characters and floating point numbers, outside the o~ject system, but deals with everything else as objects.
And this language design enables Java to avoid many of the performance pitfalls found in a purely object-oriented language. In all other ways, Java is a pure object-oriented language. All program code and data reside within objects and classes.
Apple~
An applet is a small Java program that is automatically downloaded from a Web site and run within your Web browser in response to instructions to do so contained within the Web page you are viewing.
Java Enabl ed Browser There are three different types of Web browser, ordinary Web browser, Java-capable Web browser and native Java Web browser. Ordinary Web browser is not capable of handling applets. Users of this kind of browser would not get the results produced by the applets.
A Java-capable browser, such as Netscape/Navigator 2.0 and later releases, is a browser that supports Java applets.
This kind of browser provides a display area for the applet either in the browser window which displays the Web ~n the same way that the browser disp7ays images on a page, or in a pop-up window which displays only the applet. The applet can use this display area however it sees fit, using the area to display buttons and other user interface contro7s CA 0226663~ 1999-03-22 WO98tl3753 PCT~S97/17389 or to display graphics and animation.
HotJava, the native Java Web browser, itself was written in Java. Applets running in HotJava can have much more control over the browser's user interface environment, and the browser can be extended t:o support new media formats and protocols through the use of Java code. There are definite boundaries between the C code in which the Netscape browser was written and the Java code of the applets that the browser runs.
Java and Other Pla tforms Although Sun intends to directly support only a select group of platforms, it has taken steps to ensure that Java will eventually be ported to every platform where there is interest to do so. Sun has macle the source code to the JDK
freely available for non-commercial use. This triggered a number of efforts to port ;rava to different platforms including Linux, Next, and Amiga, in addition to Window 95, Window NT and Sun's Solaris, Macintosh, HP/UX, IBM/AIX, and SGI/Irix. These effort is much necessary to truly make Java applets transparent to all the operating environments that are connected to the Internet.
CA 0226663~ 1999-03-22 W O 98/13753 rcTrus97/1738g Prior Art SparcWork Cal endar Tool SparcWork Calendar Tool i5 a calendar schedule keeper developed by Sun. On one hand, it serves as a personal organizer capable of scheduling and reminding users of their appointments. On the other hand, as a groupware, it has the capability of sharing schedule information work group users.
Like every other scheduling software, Calendar Tool is strictly text based. There's no multimedia effect, no joint multiple calendars view, no collaborative features, and it cannot connect to the Internet services such as e-mail and linkage to other Web resources. Above all, like most of the other vendor scheduler/organizer, it functions only within Sun's proprietary operating system.
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97tl7389 g _ Brief Description of Fiqures Figure l: The CappletTM Architecture.
This figure illustrates the general Web Calendar architecture that includes a Calendar Base, and all the calendar views that a,re built upon the base. The Calendar Base supports Capplet~M - event association and execution process of Java applet within the calendar environment.
Figure 2: Stages of Capplet~M
This figure illustrates the stages of CappletlM, from independent applet with a special mission, to an event associated CappletTM called "Capplet~M instance" and the invoked "CappletTM instance" within our Web Calendar environment.
Figure 3: A Web Calendar implemented as Java applets.
This figure illustrates a Web Calendar, itself implemented in Java as an applet, that can be included in an HTML document and can be retrieved from any Java enabled Web browser. In contrast to a Web Calendar implemented in HTML, the applet calendar provides distributed process and network load balanced benefits where HTML approach is lacking. The server provides schedule storage and group hierarchy information that feeds the client calendar interactively via the applets.
Figure 4: Calendar Event, Event Action and CappletslM.
Each scheduled event is defined as a Calendar Event, which in turn contains a list of Actions such as mail alert, beep alert or pop-up alert. In general, Actions describe what the user wants the Calendar to do when the scheduled event arrives. Every event Action has the facility to associate with a specialty Capplet~M and have the Calendar trigger the Action (in CA 0226663~ 1999-03-22 W O 98/13753 P~liV~97/17389 turn the Capplet~ automatically or manually.
Figure 5: Applet Running Context.
This figure illustrates the layers of our approach to facilitate the running of any applet within our Web Calendar. The Applet Shell provides every applet execution conditions needed by the CappletsTM. This approach made the Web Calendar an open and extensible platform.
Figure 6: A consolidated view of multiple Web calendars.
This figure illustrates our approach to achieve the capability of viewing and editing multiple calendars.
Users can view their own calendar along with other calendars within a single calendar view (daily, multiple days, weekly, monthly or yearly). Via the menu push buttons, users have the choice to include/exclude calendars into/from the calendar view, in order to create any desired calendar combinations.
This provides users the ability to coordinate schedules among a group of calendars.
Figure 7: A program invocation method with panel dimension specification.
In order to invoke a program in a specific location on screen, and in a panel with specified dimensions, the user can pursue the following steps. First, highlight the program icon with a mouse point and click.
Second, select a location on the screen where the running window will fix its left-top corner and, press down the mouse button. Third, drag the mouse diagonal to the desired lower right corner. Fourth, release the mouse button. These steps will trigger the highlighted program and run it in a window with defined left-top and lower-right corners.
F~gure 8: Internet Transaction linked to Calendar event.
CA 0226663~ 1999-03-22 W098/13753 PCT~S97/17389 While a surfer of Web Calendar checking out the Box Office event schedules, the surfer sees an interesting performance and wants to book a seat. All the surfer needs to do is to bring the mouse pointer to the event text and click the mouse button. This triggers a Registration Cappletl~ associated with that performance. By filling out the primary, secondary preference and commit, the surfer instructs the Capplet~ to send the in,formation to the server for a transaction processing The surfer will then be responded with either a rejection or a confirmation and a reference number by the server. NOTE: Web Calendar has two sides of users; the calendar events publisher (e.g. Museum, Corporations, Sports, College courses, ... etc.) and the Web surfers (e.g. Consumer, students, .. ..etc.).
CA 0226663~ 1999-03-22 W 0 98/13753 PCTrUSg7/17389 Detailed Description of Invention Terminology Definitions Web Calendar: a calendar system that runs in a Internet server/browser environment.
Calendar base: the key calendar component that manages scheduled events and controls the execution of actions associated with an event.
CappletTM: a specialized Javà program that runs within a Web calendar, to provide multimedia effect or event related transactions for scheduled events. For example, A Capplet'M that sings the happy birthday song while displaying a graphic of animated cake candles and balloons.
A Capplet~ that sings Christmas choir and displays animated snowman or Santa Claus.
A CappletTM that shows today~s weather in a multimedia graphical display.
A CappletTM that sends an e-mail to the users.
A CappletTM that schedules future events on behalf of the user.
A Capplet~ that is associated with an event or schedule can be forwarded to designated recipients for pleasure or for busines functions.
Calendar view: a view that displays calendar events and their related information with a time perspective. A
calendar often has four types of views: monthly, multiple days, weekly, daily and yearly views. Each view has a time scope. For example, a monthly view with a scope of July, 1996 shows events in July, 1996. A weekly view has a scope of seven days. A daily view shows events in 24-hour slots.
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97117389 Panel: a graphical display area within a view.
Event: an entity associated with a time. An event has at least three components: (1) starting time, (2) ending time and (3) a description. For example, Appointment with dentist at 7:00pm, July 2, 1996.
John's birthday on July 4, 1996.
Java conference from June 3, 1996 to June 7, 1996.
Dinner appointment at 7:00pm, June 8, 1996.
Project deadline on July 10, 1996 HTML (Hypertext Markup Lan~lage): It is the language in which the Web documents are written. HTML has the following features:
Document formatting.
The ability to include hyperlinks which point to other Web documents or services on computer systems all over the Internet.
Embed graphical images and clickable image maps with hot spots to take users to various places depending on where in the image users clicked.
Multithreading: The ability to run multiple threads concurrently. Each thread can be thought of as a separate mini-program that gets started by an application and runs in parallel to it. Java program often uses several threads handling various activities such as tracking the mouse position, updating the position of on-screen graphical objects, or simply keeping time.
Object Oriented: A buzzword these days. It is used to describe languages, styles oE programming, user interfaces and just about anything else. Conceptually, object programming is often described by example in terms of the real-world objects (cars, people, houses, computers, etc.) by using software object, to simulate them in an object-oriented language.
CA 0226663~ 1999-03-22 WO98J137~3 PCT~S97/1~89 Protocol: A messaging mechanism that is understood by both ends of the communication line.
Concurrency: Multiple processes or threads running within the same time slot in a time sharing manner. However each process or thread thinks it has the whole CPU to itself.
This makes belief that all of the processes are running concurrently.
GUI (Graphical User Interface): A general term for all window based front-end widgets. All GUI's make use of graphics on a bitmapped video display. Graphics provides better utilization of screen real estate, a virtually rich environment for conveying information, and the possibility of WYSWYG ~what you see is what you get) video display of graphics and formatted text prepared for a printed document.
Model-View Paradigm: A methodology in GUI programming technique. It entails all displayed data contents be controlled by an independent model object. There is no limit of how many views can be associated with a model.
The model has the intelligence of detecting a data content change, and thereby triggering refresh actions for all the related views. Sometimes this intelligence is built in yet a third object called Controller. The ideas is to de-couple display functions and application functions, following a clean and easy to maintain programming practice.
We say that an event occurs if the current time is between the starting time and the ending time of the event.
We say that an event appears in a view if either the starting time or the ending time of the event falls within the scope of the view.
CA 0226663~ 1999-03-22 WO 98/13753 PCTnUS97/1738g -].5-We say that a view is enablecL if the calendar user chooses it through user interface.
This invention provides the base CappletTM architecture recited in Figure 1, which al~Lows multiple Java programs to run simultaneously in a Web calendar.
Within our Java implemented Web calendar base architecture, Java applet can be associat:ed with any calendar event.
Each calendar event, in additlon to the applet association, can trigger multiple actions such as e-mail, pop-up alert, beeping. Applets can be tr:iggered simultaneously in the daily, multiple days, weekly and monthly views, either in the cells or in pop-up windows.
The Web calendar shown in the basic CappletTM architecture (Figure 1) can either be implemented as a Java applet, or as an HTML document that runs within a Web browser (See Figure 3). In this specification, we describe the implementation of a Java ca:Lendar platform applet, which emphasizes on the client side's capabilities and flexibility as opposed to HTML's sole reliance on the server side process.
The Web calendar applet, a ~latform running either in the Internet or any Intranet envi:ronment, organizes and manages event schedules for individuals or working groups. This platform is responsible of keeping and showing the private and/or public event schedu]es. Events information are displayed in one of the four calendar views (monthly, weekly, daily, multiple days and yearly), and is maintained in the Web server database.
A Java program that can run within a Web calendar is named a CappletTM. Once a CappletTM is associated to an event, it becomes ready to be triggered. The pair [CappletTM, event]
is referred to as a CappletTM instance (See Figure 2).
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97117389 Multiple CappletTM instances may be created with the same CappletTM .
There is no limit regarding the number of Capplet~5 instances and the number of Capplets~ that can be associated with an event.
The CappletTM in a CappletTM instance may be activated in one of the following five ways:~0 When the event occurs.
When a user triggers it.
When a view in which the event appears is enabled.
When a second CappletTM activates it.
When the Cappletl~ is associated to an event (i.e., when the CappletrM instance is created).
An activated CappletTM can access the information related to its associated event, such as retrieving the event description or inserting a new event into the user's schedule. Multiple CappletsTM can be activated and run in a multithreaded fashion (simultaneously). One panel in the enabled view may be assigned to a running Capplet'M. A
CappletTM can also be a background process without a view.
Association Process There is an programming interface within the CappletTM
architecture to facilitate CappletTM and event association.
The result object is called a CappletTM instance. There can be as many CappletTM instances as the user desires per CappletTM. Each CappletTM instance carries an event id to maintain its uniqueness within the calendar system. Notice that the Capplet'M instance is persistent, so that user does not have to re-associate the instance, even after it has been activated or even after the whole Web Calendar has been restarted.
CA 0226663~ 1999-03-22 Within each event, there can be as many actions as the user desires. Each action, carrying an unique action id, can be associated with a CappletTM shown in Figure 4. In order to lend the multimedia animation and interaction to otherwise mundane calendar platform, we incorporated a basic CappletTM
architecture into the calendar platform applet. We provided the following five ~esign components:
1. Common CappletTM interface.
Backqround of the Invention The invention begins with an intention to create a Java visual table widget (vTable) with Internet capability on the Web browser. It can be used by the programmers who need a table widget written in Java to organize data presentation. vTable is a programmable layout manager that supports data presentation in two dimensional grids, rows, columns and cells. vTable adopts model-view GUI paradigm, such that for each view object, there is a model ob~ect controlling its contents. There can be multiple views associated with a single model. So once the model's contents changed, all of the related views will be automatically refreshed with the new contents.
When it was completed, we felt a real Internet application that builds upon the visual table would serve to enhance the widget's interfaces and :Eeatures. The application of Web based Calendar came naturally, since every calendar view uses two dimensional table. Jigsaw puzzle was also in consideration, but was ruled out for it has no practical usage.
The calendar started off as a Web based personal organizer.
It provides daily events and appointments scheduling. To make our Web Calendar stands out from the others, we created the calendar-applet (~Capplet") architecture to support the multimedia event contents distribution and online registration. It features client side event ~ specification and the association between Capplet~ and event. To leverage on the Web's interconnection nature, we created group concept which represents a collection of individual canlendars. It allows the sharing and coordinating of events and schedules among a group of SU~STITUTE SHEET (RULE 26) CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 users. With the inclusion of group features, the Web calendar has grown from a personal organizer to a scheduling and calendaring groupware.
In addition, as we build the calendar applet, we had enhanced our Java GUI foundation library to support our GUI
needs. This includes specialized Layout managers, Panels, List controls and miscellaneous components. Layout manager organize its components geographical locations. Panel is a container that is contained within a container. All of these enhancements are necessary for the Web Calendar GUI
and are not provided by the Java language Abstract Windowing Toolkit (AWT).
The scope of the invention covers: 1) Java personal organizer, 2) Internet scheduling and calendar groupware, 3) Calendar event with multimedia effect, 4) Joint multiple calendars view, 5) Open calendar architecture that is ready to run any Java applet, 6) Invocation method for programs with display panels and 7) Internet transaction done directly through calendar events.
~he Internet and World Wide Web Internet The Internet is the name for a group of worldwide information resources. The roots of the Internet lie in a collection of computer networks that were developed in the 1970s. They started with a network called the Arpanet that was sponsored by the United States Department of Defense.
The original Arpanet has long since been expanded and replaced, and today its descendent form the global backbone of what we call the Internet.
It would be a mistake however to think of the Internet as a computer network, or even a group of computer networks CA 0226663~ 1999-03-22 WO 98/13753 PCTrUS97/1738g --3--connected to one another. The computer networks are simply the medium that carries the h~lge resource of practical and enjoyable information. The Internet allows mil~ions of people all over the world to communicate and to share. It is a people-oriented society.
Internet has a slew of services: Text file, Telnet session, Gopher, Usenet news group, File Transfer Protocol and the latest and greatest World Wide Web, each with either specialized information contents or specialized network functions.
Worl d Wide Web (WWW) The Web, one of Internet's many resources, was originally developed in Switzerland, at the CERN research center. The idea was to create a way for the CERN physicists to share their work and to use community information. This idea was soon embraced within the Internet as a general mechanism for accessing information and services.
Like many other Internet resources, the Web uses a client/server system. Users use a client program called a browser act as a window into the Web. From the point of Web, everything in the universe consists of either documents or links. Thus the job of a browser is to read documents and to follow whatever links users select. A
browser knows how to access just about every service and resource on the Internet, especially it knows how to connect to WWW servers that offer public hypertext documents.
In the language of the Web, a hypertext document is something that contains data and possibly, links to other documents. What makes the Web so powerful is that a link might go to any type of Internet resource. It is flexible and convenient to use.
CA 0226663~ 1999-03-22 WO 98/13753 PCTrUS9711738g The In terne t Pro tocol s The protocols that Internet hosts use to communicate among themselves are key components of the net. For the WWW, HTTP is the most important of these communication protocols. All documents on the WWW are referenced through a URL. And each URL begins with the name of the protocol, HTTP, that is used to find that document. A Web browser must have the HTTP capability built-in.
Java Java is a language developed by Sun with the intent to meet the challenge of application development in the context of heterogeneous network-wide distributed environments. And the paramount among these challenges is the secure delivery of applications that consume the minimum of system resources, can run on any hardware and software platform, and can be dynamically extended.
The massive growth of the Internet and the World-Wide Web leads us to a completely new way of looking at development and distribution of software. To live in the world of electronic commerce and distribution, the Java language supports secure, high-performance, and highly robust application development on multiple platforms in heterogeneous, distributed networks.
Operating on multiple platforms in heterogeneous networks invalidates the traditional schemes of binary distribution, release, upgrade, patch, and so on. To survive in this jungle, the Java language has to be architectural-neutral, portable, and dynamically adaptable.
To ensure the programmers can flourish within their software development environment, the Java language system that emerged to meet these needs is simple, so it can be CA 0226663~ 1999-03-22 WO 98/13753 PCTrUS97tl738g easily programmed by most developers, familiar, so that current developers can easily learn the Java language, objected oriented, to fit int:o distributed client-server applications, multithreaded, for high performance in applications that need to perform multiple concurrent activities, and interpreted, for maximum portability and dynamic capabilities.
Java vs. Procedural Languages At a fundamental level, procedure languages are designed first to provide programmers with a framework for issuing commands for the computer t:o execute (hence the term "procedura~") and second to allow programmers to organize and manipulate data. Depending on the language, how intuitively a procedural language on these two features very quite a bit. For examples, COBOL, FORTRAN and C are all procedural languages, but each has a specialized area and cannot be interchanged.
An object-oriented language like Java is designed first to allow programmers to define t:he objects that make up the program and data they contain, and second to define the code that makes up the program.
Many programmers are now using C++ or languages like Object Pascal, Perl 5.0, and Objective C. What these languages have in common is that they are hybrid languages, or procedural languages with object-oriented extensions.
These languages make it possible for programmers to use objects within their programs~ but they allow-and in many cases required-to use procedural code to accomplish certain ~ tasks.
~ava vs. Other Object-Oriented Languages A pure object-oriented language entails all data in the W098tl37S3 ~CT~S97/17389 language is represented in the form of objects. In SmallTalk, which is a pure object-oriented language, every aspect of the language is object- or message-based and all data types, simple or complex, are object classes.
Java implements the basic C simple data types, such as integer, characters and floating point numbers, outside the o~ject system, but deals with everything else as objects.
And this language design enables Java to avoid many of the performance pitfalls found in a purely object-oriented language. In all other ways, Java is a pure object-oriented language. All program code and data reside within objects and classes.
Apple~
An applet is a small Java program that is automatically downloaded from a Web site and run within your Web browser in response to instructions to do so contained within the Web page you are viewing.
Java Enabl ed Browser There are three different types of Web browser, ordinary Web browser, Java-capable Web browser and native Java Web browser. Ordinary Web browser is not capable of handling applets. Users of this kind of browser would not get the results produced by the applets.
A Java-capable browser, such as Netscape/Navigator 2.0 and later releases, is a browser that supports Java applets.
This kind of browser provides a display area for the applet either in the browser window which displays the Web ~n the same way that the browser disp7ays images on a page, or in a pop-up window which displays only the applet. The applet can use this display area however it sees fit, using the area to display buttons and other user interface contro7s CA 0226663~ 1999-03-22 WO98tl3753 PCT~S97/17389 or to display graphics and animation.
HotJava, the native Java Web browser, itself was written in Java. Applets running in HotJava can have much more control over the browser's user interface environment, and the browser can be extended t:o support new media formats and protocols through the use of Java code. There are definite boundaries between the C code in which the Netscape browser was written and the Java code of the applets that the browser runs.
Java and Other Pla tforms Although Sun intends to directly support only a select group of platforms, it has taken steps to ensure that Java will eventually be ported to every platform where there is interest to do so. Sun has macle the source code to the JDK
freely available for non-commercial use. This triggered a number of efforts to port ;rava to different platforms including Linux, Next, and Amiga, in addition to Window 95, Window NT and Sun's Solaris, Macintosh, HP/UX, IBM/AIX, and SGI/Irix. These effort is much necessary to truly make Java applets transparent to all the operating environments that are connected to the Internet.
CA 0226663~ 1999-03-22 W O 98/13753 rcTrus97/1738g Prior Art SparcWork Cal endar Tool SparcWork Calendar Tool i5 a calendar schedule keeper developed by Sun. On one hand, it serves as a personal organizer capable of scheduling and reminding users of their appointments. On the other hand, as a groupware, it has the capability of sharing schedule information work group users.
Like every other scheduling software, Calendar Tool is strictly text based. There's no multimedia effect, no joint multiple calendars view, no collaborative features, and it cannot connect to the Internet services such as e-mail and linkage to other Web resources. Above all, like most of the other vendor scheduler/organizer, it functions only within Sun's proprietary operating system.
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97tl7389 g _ Brief Description of Fiqures Figure l: The CappletTM Architecture.
This figure illustrates the general Web Calendar architecture that includes a Calendar Base, and all the calendar views that a,re built upon the base. The Calendar Base supports Capplet~M - event association and execution process of Java applet within the calendar environment.
Figure 2: Stages of Capplet~M
This figure illustrates the stages of CappletlM, from independent applet with a special mission, to an event associated CappletTM called "Capplet~M instance" and the invoked "CappletTM instance" within our Web Calendar environment.
Figure 3: A Web Calendar implemented as Java applets.
This figure illustrates a Web Calendar, itself implemented in Java as an applet, that can be included in an HTML document and can be retrieved from any Java enabled Web browser. In contrast to a Web Calendar implemented in HTML, the applet calendar provides distributed process and network load balanced benefits where HTML approach is lacking. The server provides schedule storage and group hierarchy information that feeds the client calendar interactively via the applets.
Figure 4: Calendar Event, Event Action and CappletslM.
Each scheduled event is defined as a Calendar Event, which in turn contains a list of Actions such as mail alert, beep alert or pop-up alert. In general, Actions describe what the user wants the Calendar to do when the scheduled event arrives. Every event Action has the facility to associate with a specialty Capplet~M and have the Calendar trigger the Action (in CA 0226663~ 1999-03-22 W O 98/13753 P~liV~97/17389 turn the Capplet~ automatically or manually.
Figure 5: Applet Running Context.
This figure illustrates the layers of our approach to facilitate the running of any applet within our Web Calendar. The Applet Shell provides every applet execution conditions needed by the CappletsTM. This approach made the Web Calendar an open and extensible platform.
Figure 6: A consolidated view of multiple Web calendars.
This figure illustrates our approach to achieve the capability of viewing and editing multiple calendars.
Users can view their own calendar along with other calendars within a single calendar view (daily, multiple days, weekly, monthly or yearly). Via the menu push buttons, users have the choice to include/exclude calendars into/from the calendar view, in order to create any desired calendar combinations.
This provides users the ability to coordinate schedules among a group of calendars.
Figure 7: A program invocation method with panel dimension specification.
In order to invoke a program in a specific location on screen, and in a panel with specified dimensions, the user can pursue the following steps. First, highlight the program icon with a mouse point and click.
Second, select a location on the screen where the running window will fix its left-top corner and, press down the mouse button. Third, drag the mouse diagonal to the desired lower right corner. Fourth, release the mouse button. These steps will trigger the highlighted program and run it in a window with defined left-top and lower-right corners.
F~gure 8: Internet Transaction linked to Calendar event.
CA 0226663~ 1999-03-22 W098/13753 PCT~S97/17389 While a surfer of Web Calendar checking out the Box Office event schedules, the surfer sees an interesting performance and wants to book a seat. All the surfer needs to do is to bring the mouse pointer to the event text and click the mouse button. This triggers a Registration Cappletl~ associated with that performance. By filling out the primary, secondary preference and commit, the surfer instructs the Capplet~ to send the in,formation to the server for a transaction processing The surfer will then be responded with either a rejection or a confirmation and a reference number by the server. NOTE: Web Calendar has two sides of users; the calendar events publisher (e.g. Museum, Corporations, Sports, College courses, ... etc.) and the Web surfers (e.g. Consumer, students, .. ..etc.).
CA 0226663~ 1999-03-22 W 0 98/13753 PCTrUSg7/17389 Detailed Description of Invention Terminology Definitions Web Calendar: a calendar system that runs in a Internet server/browser environment.
Calendar base: the key calendar component that manages scheduled events and controls the execution of actions associated with an event.
CappletTM: a specialized Javà program that runs within a Web calendar, to provide multimedia effect or event related transactions for scheduled events. For example, A Capplet'M that sings the happy birthday song while displaying a graphic of animated cake candles and balloons.
A Capplet~ that sings Christmas choir and displays animated snowman or Santa Claus.
A CappletTM that shows today~s weather in a multimedia graphical display.
A CappletTM that sends an e-mail to the users.
A CappletTM that schedules future events on behalf of the user.
A Capplet~ that is associated with an event or schedule can be forwarded to designated recipients for pleasure or for busines functions.
Calendar view: a view that displays calendar events and their related information with a time perspective. A
calendar often has four types of views: monthly, multiple days, weekly, daily and yearly views. Each view has a time scope. For example, a monthly view with a scope of July, 1996 shows events in July, 1996. A weekly view has a scope of seven days. A daily view shows events in 24-hour slots.
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97117389 Panel: a graphical display area within a view.
Event: an entity associated with a time. An event has at least three components: (1) starting time, (2) ending time and (3) a description. For example, Appointment with dentist at 7:00pm, July 2, 1996.
John's birthday on July 4, 1996.
Java conference from June 3, 1996 to June 7, 1996.
Dinner appointment at 7:00pm, June 8, 1996.
Project deadline on July 10, 1996 HTML (Hypertext Markup Lan~lage): It is the language in which the Web documents are written. HTML has the following features:
Document formatting.
The ability to include hyperlinks which point to other Web documents or services on computer systems all over the Internet.
Embed graphical images and clickable image maps with hot spots to take users to various places depending on where in the image users clicked.
Multithreading: The ability to run multiple threads concurrently. Each thread can be thought of as a separate mini-program that gets started by an application and runs in parallel to it. Java program often uses several threads handling various activities such as tracking the mouse position, updating the position of on-screen graphical objects, or simply keeping time.
Object Oriented: A buzzword these days. It is used to describe languages, styles oE programming, user interfaces and just about anything else. Conceptually, object programming is often described by example in terms of the real-world objects (cars, people, houses, computers, etc.) by using software object, to simulate them in an object-oriented language.
CA 0226663~ 1999-03-22 WO98J137~3 PCT~S97/1~89 Protocol: A messaging mechanism that is understood by both ends of the communication line.
Concurrency: Multiple processes or threads running within the same time slot in a time sharing manner. However each process or thread thinks it has the whole CPU to itself.
This makes belief that all of the processes are running concurrently.
GUI (Graphical User Interface): A general term for all window based front-end widgets. All GUI's make use of graphics on a bitmapped video display. Graphics provides better utilization of screen real estate, a virtually rich environment for conveying information, and the possibility of WYSWYG ~what you see is what you get) video display of graphics and formatted text prepared for a printed document.
Model-View Paradigm: A methodology in GUI programming technique. It entails all displayed data contents be controlled by an independent model object. There is no limit of how many views can be associated with a model.
The model has the intelligence of detecting a data content change, and thereby triggering refresh actions for all the related views. Sometimes this intelligence is built in yet a third object called Controller. The ideas is to de-couple display functions and application functions, following a clean and easy to maintain programming practice.
We say that an event occurs if the current time is between the starting time and the ending time of the event.
We say that an event appears in a view if either the starting time or the ending time of the event falls within the scope of the view.
CA 0226663~ 1999-03-22 WO 98/13753 PCTnUS97/1738g -].5-We say that a view is enablecL if the calendar user chooses it through user interface.
This invention provides the base CappletTM architecture recited in Figure 1, which al~Lows multiple Java programs to run simultaneously in a Web calendar.
Within our Java implemented Web calendar base architecture, Java applet can be associat:ed with any calendar event.
Each calendar event, in additlon to the applet association, can trigger multiple actions such as e-mail, pop-up alert, beeping. Applets can be tr:iggered simultaneously in the daily, multiple days, weekly and monthly views, either in the cells or in pop-up windows.
The Web calendar shown in the basic CappletTM architecture (Figure 1) can either be implemented as a Java applet, or as an HTML document that runs within a Web browser (See Figure 3). In this specification, we describe the implementation of a Java ca:Lendar platform applet, which emphasizes on the client side's capabilities and flexibility as opposed to HTML's sole reliance on the server side process.
The Web calendar applet, a ~latform running either in the Internet or any Intranet envi:ronment, organizes and manages event schedules for individuals or working groups. This platform is responsible of keeping and showing the private and/or public event schedu]es. Events information are displayed in one of the four calendar views (monthly, weekly, daily, multiple days and yearly), and is maintained in the Web server database.
A Java program that can run within a Web calendar is named a CappletTM. Once a CappletTM is associated to an event, it becomes ready to be triggered. The pair [CappletTM, event]
is referred to as a CappletTM instance (See Figure 2).
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97117389 Multiple CappletTM instances may be created with the same CappletTM .
There is no limit regarding the number of Capplet~5 instances and the number of Capplets~ that can be associated with an event.
The CappletTM in a CappletTM instance may be activated in one of the following five ways:~0 When the event occurs.
When a user triggers it.
When a view in which the event appears is enabled.
When a second CappletTM activates it.
When the Cappletl~ is associated to an event (i.e., when the CappletrM instance is created).
An activated CappletTM can access the information related to its associated event, such as retrieving the event description or inserting a new event into the user's schedule. Multiple CappletsTM can be activated and run in a multithreaded fashion (simultaneously). One panel in the enabled view may be assigned to a running Capplet'M. A
CappletTM can also be a background process without a view.
Association Process There is an programming interface within the CappletTM
architecture to facilitate CappletTM and event association.
The result object is called a CappletTM instance. There can be as many CappletTM instances as the user desires per CappletTM. Each CappletTM instance carries an event id to maintain its uniqueness within the calendar system. Notice that the Capplet'M instance is persistent, so that user does not have to re-associate the instance, even after it has been activated or even after the whole Web Calendar has been restarted.
CA 0226663~ 1999-03-22 Within each event, there can be as many actions as the user desires. Each action, carrying an unique action id, can be associated with a CappletTM shown in Figure 4. In order to lend the multimedia animation and interaction to otherwise mundane calendar platform, we incorporated a basic CappletTM
architecture into the calendar platform applet. We provided the following five ~esign components:
1. Common CappletTM interface.
2. The process to associate a CappletTM to an event.
3. CappletTM execution environment.
4. CappletTM triggering mechanisms.
5. CappletTM plug-in procedure.
Execution Environment In order to run multiple CappletsTM simultaneously, the calendar applet prepares one environment for each CappletTM
and performs the following:
1. Create a new thread.
2. Execute the init( ) method with the thread.
3. Check whether the Capp].etTM has a panel by calling getConfigPanel(). If yes, add the panel to the view.
4. Execute the start method with the thread.
5. To exit, execute the stop( ) method.
API
/*
* Create a schedule item for a certain date.
* @ date - the date when the event is scheduled * @ detail - the detail of the event */
public final class CalEvent extends eRow {
public CalEvent(Strina owner, Date date, String detail) throws IllegalAccessException {
}
CA 0226663~ 1999-03-22 WO 98/13753 PCTAUS97/1738g -18-//
// Modify the privacy setting of this event.
// The possible values are "U"ser, "G"roup // and "W"orld. Only the owner of the event // can change the privacy value of the event.
// Otherwise, an exception will be thrown.
//
public setPrivacy(String value) throws IllegalAccessException {
}
//
// Check to see if a particular user is the // owner of this event.
//
public isOwner(String user) {
}
public set(String, key, Object value) {
}
public Object get(String key) {
}
//
// To determine if a date/time falls within // this event's time period. This facilitates // the use of multiple days event.
//
public boolean inside(WMDate date) {
}
}
//
// A container class which holds and manages a list -// of action objects associated with a specific // calendar event-schedule. Each action object in // the list is associated with an action type.
//
public final class ActionList extends HashTable {
public Action get(String actionType) {
CA 0226663~ 1999-03-22 W O 98/13753 PCTrUS97/17389 -:L9-}
public Object put(Object key, Object va~ue) {
}
}
// The Action class is a container class which // holds information and mea:ns to execute // Capplet~ or Agent.
//
public final class Action extends Object ~
// Create an Action object of a certain // action type.
public Action(String actionType) {
}
// Get the type of this action.
public final String getActionType() {
// The event that is associated with this // action.
public final CalEvent getEvent() {
}
// Is this an alert type of action?
public boolean isAlert() {
}
// Set the time in seconds when this action // should take place before the actual start // time. The default value is 0. Only an // action of ALERT type would be useful in // this case.
public final void setAlertBefore(long seconds) {
CA 0226663~ 1999-03-22 W 0 98/13753 PCT~US97/1738g }
// Set the DOMAIN in which this action should // take place. CappletsTM that are designed to // run on CLIENT domain may not suitable for // SERVER domain.
public final void setLocation(int location) {
}
public boolean isClientDomain() {
}
public boolean isServerDomain() {
}
public void init() }
public void start() {
}
public void stop() ~
}
public CappletTM getCappletTM() ~
}
}
This invention provides a process to run any Java applet on our Web Calendar. In other words, we claim the open ended characteristics of the overall calendar architecture.
The applet that can be associated with our Web Calendar events and run within our calendar context need not conform to any proprietary application programming interface (API) requirements. Just following the standard Java applet API
is enough to be able to associate with our calendar event and run within our calendar.
CA 0226663~ 1999-03-22 WO98113753 PCT~S97/17389 Java applets have its own common interface, which is defined in an abstract class called Applet. In order to run an applet within a Web calendar, the calendar platform applet must provide applet context for each applet. Our approach is to adopt an applet shell, which will serve as an applet context (See Figure 5).
For each applet to run, there are certain functions that the applet must call to prepare itself before running and coordinate computer resource with other processes while running. Our applet shell that is integrated with the Web Calendar provides these functions so that any applet can run within the Web Calendar views, instead of running in its own applet viewer independently.
API:
class CappletShell extends Panel implements Capplet~M
{
Applet applet = null;
Capplet~M Shell(Applet applet){
super();
this.applet = applet;
setLayout(new BorderLayout());
add("Center", this.applet);
}
public void setStub(App]etStub stub){
applet.setStub(stub);
}
public void initCapplet~M(CalEvent event, Hashtable param){
applet.init();
}
public void start() {
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 applet.start()i }
public void stop() {
applet.stop();
}
}
Common Interface Like Java appletTM, every Capplet'M must conform to a common interface. A Java interface is defined as follows:
public interface Capplet {
lS public void initCapplet'M(CalEvent event, Hashtable parameters);
public void start();
public void stop();
}
public interface ConfigurableCappletTM extends CappletTM {
public java.awt.Panel getConfigPanel(java.awt.Frame parentFrame);
public java.util.Hashtable getConfigParameters();
The object with the interface of Configurable Capplet'M
provides a panel and the system will then prepare a applet context for it.
This invention provides a process to facilitate the viewing and editing of multiple calendars, using a single calendar view ~See Figure 6). While the users are looking at a single calendar view (daily, multiple days, weekly, monthly, yearly or tasks), the schedule information may consist of one or many Web calendar(s). As the user moves the mouse pointer across the calendar view, the owner CA 0226663~ 1999-03-22 WO g8tl3753 rCT/US97117389 ~,3-information pertinent to the pointed calendar schedule will be displayed at the bottom oi- the calendar view.
In its embodiment, end-users can choose a collection of calendars to be displayed in a single calendar view. For each calendar selected and downloaded form the Internet/intranet, there is a corresponding menu push button displayed below the calendars. Via these menu buttons, users have the option to dynamically create any calendar combinations from the currently downloaded calendars.
The Web Calendar also provides the editing capability of multiple calendars to specific users. These users are given the authority by the calendar owners to update their calendar schedules, during t:heir absence or inability to update the calendars themselves.
API:
// Copyright (c) 199~-1998 WebMan Technologies, Inc.
//
// Code segment demonstrating Timecruiser calendar management.
// Get all the names of the user selected calendars.
// Hidden calendars included.
protected Vector getAllCalNames() ~
return (Vector)allCalNames.clone();
}
// Get all the names of the currently visible calendars.
protected Vector getVisibleCalNames() {
return (Vector)visibleCalNames.clone();
}
CA 0226663~ 1999-03-22 WO98/137~3 PCT~S97117389 // Add a series of calendars to be displayed.
public void addCalendars(Vector vec) {
if ( vec == null ) {
return;
}
for ( Enumeration enum=vec.elements();
enum.hasMoreElements(); ) {
String name = enum.nextElement().toString();
addCalendar(name,false);
}
lastUpdate = new Date();
if ( currentView != null ) {
currentView.updateView();
}
}
// Add a single calendar to be displayed.
public void addCalendar(String name) {
addCalendar(name,true);
}
// Add a calendar to be displayed. If the calendar is not visible, it // will mark to be visible.
protected void addCalendar(String name, boolean refresh) {
if ( !allCalNames.contains(name) ) {
allCalNames.addElement(name);
}
if ( !visibleCalNames.contains(name~ ) {
visibleCalNames.addElement(name~;
}
lastUpdate = new Date();
if ( refresh && currentView != null ) {
currentView.updateView();
CA 0226663~ 1999-03-22 W098/13753 PCT~S97/17389 -:25-}
// Remove a series of calendars from memory.
public boolean removeCalendars(Vector vec) {
if ( vec == null ) return false;
Vector bkupVec = new Vector();
for ( Enumeration enum=vec.elements();
enum.hasMoreElements(); ) {
String name = enum.nextElement().toString();
if ( !removeCalendar(name,false) ) {
addCalendars(bkupVec);
errorMsg = "Failed to remove "+name+".
Remove command rolled back.";
calendar.showStatus(errorMsg);
return false;
}
bkupVec.addElement(name);
}
lastUpdate = new Date();
if ( currentView != null ) {
currentView.updateView();
}
return true;
}
// Remove a single calendar.
public boolean removeCalendar(String name) {
return removeCalendar(name,true);
}
// Remove a single calendar from the cache.
protected boolean removeCalendar(String name, boolean refresh) {
int index = allCalNames indexOf(name);
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 if ( index < 0 ) {
return false;
}
allCalNames.removeElementAt(index);
index = visibleCalNames.indexOf(name);
if ( index ~= 0 ) {
visibleCalNames.removeElementAt(index);
}
lastUpdate = new Date();
if ( refresh && currentView != null ) {
currentView.updateView();
}
return true;
}
// Mark a calendar as visible and refresh the screen immediately.
// If the calendar is not already loaded, it will be loaded as well.
public boolean showCalendar(String name) {
if ( name == null ) {
return false;
}
if ( allCalNames.contains(name) ) {
if ( !visibleCalNames.contains(name) ) {
visibleCalNames.addElement(name);
if ( currentView != null ) {
lastUpdate = new Date();
currentView.updateView();
}
}
return true;
}
return false;
}
// Mark a calendar as hidden. Calendar data will NOT be CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 -,'7-unloaded.
public boolean hideCalenda:r(String name) {
if ( name == null ) {
return false;
}
if ( allCalNames.contains(name) ) {
int index;
if ( (index=visibleCalNames.indexOf(name))~=0 ) {
visibleCalNames.removeElementAt(index);
if ( currentView != null ) {
lastUpdate = new Date();
currentView.update'~iew();
}
}
return true;
}
return false;
}
This invention provides a process of user interaction to activate a program and run it in a panel whose dimension and location on the screen is dynamically specified. The process includes three steps of user interaction:
l. Select the window/panel based program by focusing on the icon and press the mouse button;
2. Move the mouse to coordinate (xl, yl) and press the mouse button; and~0 3. Drag the mouse to coordinate (x2, y2) and release the mouse button.
In its embodiment, the program is running within a display panel. In a further embod:iment, the display panel is a window based program.
Our process to invoke an appletTM and let the user specify CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 the ~im~n.~ions and location-on screen includes three steps of user interaction.
l. Select the Java program by focusing on the icon and press the mouse button.
2. Move the mouse to coordinate (xl, yl) and press the mouse button 3. Drag the mouse to coordinate (x2, y2) and release the mouse button.
This is a specific user interaction sequence to invoke our CappletslM or any Java applet (See Figure 7). To define the dimension and location for a previously selected Java program, user first chooses an upper left anchor corner of the applet viewer (xl, yl) by a mouse button press, followed by the mouse drag to the lower right corner (x2, y2).
Upon the user's release of the mouse button, a graphical panel with upper left corner of (xl, yl) and lower right corner of (x2, y2) is created and simultaneously the Java program is started within the newly created panel. The Java program can be an applet, a CappletrM or simply a Java application.
This invention provides a process to produce multimedia effects on a Web Calendar. We have achieved the effect of multimedia calendar events using Java language to implement the Web Calendar.
Separating from the conventional text based calendar event notification, our Web Calendar achieved the multimedia and animated graphic event expression capability. It is possible now to express a calendar event in animated graphics, video with audio effects.
The multimedia effect process is to facilitate Mulitimedia CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 Java applets to be able run in the context of a Web calendar. A Java applet, by definition, is run under a Java enabled Web browser context (referred to as an applet context) and can be programmed to produce multimedia effects. In embodiment, we use Java to implement a Web Calendar that, in turn, prc)vides all the Capplets~ with Java enabled Web browser context.
Our process provides the full applet context in which multimedia capability is included, in a calendar environment (Refer to Figure l, 3, 5, 8). This is accomplished by proliferating the applet running context for each cell within the ca:Lendar. Each cell on a common calendar monthly, weekly, multiple days or daily grid is capable of running its own CappletTM instance with multimedia effects, concurrently with other cell's or pop-up window's CappletTM instances.
See examples of multimedia calendar events cited in the Terminology Definition under CappletTM.
This invention provides a process that integrates transaction capability to scheduled events within Web Calendar. The process provides transaction over Internet, specifically via a Web Calendar event.
The process is to associate CappletTM that specializes in Internet transaction with Web Calendar event (See Figure 8). It provides users with the capability to make registrations or reservations for a scheduled event, directly in the Web Calendar. It accomplishes a sensible solution for users to make commitment to calendar events while surfing the net. This is a special embodiment of our CappletTM and the architecture is recited in Figure l. For example, during the query of Lincoln Center opera calendars, the user can actually activate a CappletTM that handles the seating arrangement and book tickets for the CA 0226663~ 1999-03-22 WO98/13753 P~ 7/17389 desired shows and, receive either rejection or confirm on the request.
The CappletTM invoked at client sites handles loading the pertinent registration form for the desired event, collecting the user preference information, sends the information to the server and receive server response for the user.
The server side process of the Web Calendar event transaction is responsible of receiving the registration CappletTM messages, locking up resources (seats, tickets, classes) and making sure there's only one booking per resource. After completing the request, server process will send back a message ind~cating the status of the request.
API:
/**
The RegiServer provides a Registration service whereby clients can request registration forms from a Form database, fill them out and the server will process the form and make a reservation.
*/
public class RegiServer implements Runnable {
protected ServerSocket sock;
public FormDB rdb;
public RegiServer(){
try {
sock = new ServerSocket(port);
}
catch (IOException e) {
System.out.println("Error Creating Socket .. exiting")i CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 _,1 System.exit(l);.
}
// opens the form dat:abase rdb = new FormDB("FormTable");
try {
rdb.open();
}
catch (Exception e) ~i System.out.print:Ln("Unable to open database");
}
run();
}
/**
All server actions are performed here. It waits for connections parses c:lient requests and issues appropriate calls to the database * @see RegiDB
* @see ClientComm */
public void run() {
}
/**
* Clean-Up : close the Form ~atabase */
public void finalize() {
rdb.close();
}
// This starts the registration server public static void main(String argv[]) }
/**
CA 0226663~ l999-03-22 W O 98/13753 PCT~US97/17389 * This handles the communication on the server side */
class ServerComm extends Thread {
public ServerComm(Socket sock, FormDB formDb) {
this.start();
}
public void run() {
/**
* Registration client cappletTM
*/~5 public class RegiClient extends AppletTM implements ConfigurableCappletTM ( public RegiClient() {
}
public RegiClient(FormID formId) {
}
/**
This function is required by the CappletTM interface * @param event This is the event associated with the capplet * @param table: Contains name-value pairs containing the parameters * for the registration */
public void initCappletTM(CalEvent event, Hashtable table) ~
this.eventId =(String)event.getIndexKey();
this.eventDesc =
(String)event.get(EventKey.EVENT_NOTE);
init()i }
CA 0226663~ 1999-03-22 WO98tl3753 PCTNS97/17389 public void init() ~
String formName = getParameter("FORMNAME");
String formOwner = getl?arameter("FORMOWNER");
formId = new FormID(formOwner, formName);
form = RegiConfig.getForm(formId);
form.setEvent(eventId,eventDesc);
setLayout(new BorderLayout());
add("Center", form);
public void start() {
}
public void stop () {
}
/**
* Returns registration form configuration * panel to calendar */
public Panel getConfig:Panel(Frame frame, CalEvent ev) {
config = new RegiConfig(user, frame);
return config;
}
/**
* Returns configuration parameters to * calendar */
public Hashtable getConfigParameters() {
class RegiConfig extends Panel {
/**
* Constructs config panel */
CA 0226663~ 1999-03-22 WO98113753 PCT~S97117389 RegiConfig(String user, Frame frame) {
this.frame = frame;
Panel topPnl = new Panel();
previewBtn = new Button("Preview ...");
topPnl.setLayout(new FlowLayout(FlowLayout.LEFT));
topPnl.add(new Label("Please select a registration form: "));
topPnl.add(previewBtn);
constructFormList(user);
setLayout(new BorderLayout());
add("North", topPnl);
add("Center", formList);
/**
* Constructs form name list for selection */
void constructFormList(String user) {
formIds = getFormIDs(user);
formList = new List();
for (int i = 0; i ~ formIds.length; i++) {
if (formIds[i] != null) ( System.out.println(formIds[i].getDescription());
formList.addItem(formIds[i].getDescription());
}
}
}
* Gets names of all forms available to user */
FormID[] getFormIDs(String user) {
CA 0226663~ 1999-03-22 W 0 98/13753 PCT~US97/17389 ClientComm comm = new .
ClientComm(Session.getHost(), Session.getPort());
return comm.getFormList(user);
}
/**
* Gets registration form ~object) by name */
static RegiForm getForm(FormID id) ClientComm comm = new ClientComm(Session.getHo'st(), Session.getPort());
RegiForm form = null;
return form;
}
/**
* Handles preview button */
public boolean action(Event evt, Object arg) {
if (evt.target == previewBtn) preview();
return true;
}
} // end of class class RegiPreview extends Dialog {
RegiPreview(Frame frame, RegiForm form) // modal dialog super(frame, "Form Prev:iew", true);
Panel btnPnl = new Pane:l();
btnPnl.setLayout(new FlowLayout(FlowLayout.CENTER));
btnPnl.add(new Button("OK"));
CA 0226663~ 1999-03-22 WO98113753 PCT~S97/17389 add("Center", form);
add("South", btnPnl~;
pack();
}
public boolean action(Event evt, Object arg) {
if ("OK".equals(arg)) dispose() return true;
}
/**
* This handles the communication on the client * side */
public class ClientComm {
// The protocol for the URLConnection // NOTE: This will need to be changed to https // for secure services public static final String protocolDefault = "http";
public ClientComm(String host, int port) {
}
public ClientComm(String protocol,String host, int port)( }
/**
* Saves the form to the form database. The * end of the form contents are delimited by * "endForm" on a new line.
* @param id: The identifier of the form which * is to be saved to the CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 * database.
* @param formContents: The content of the * Form as a String * @return true if the form is saved * successfully, false if the server was * unable to save the form or if there was a * communication error between server and * client * @see FormID
* @see RegiForm */
// It will be used by the Form database // administrator protected boolean saveForm(FormID id, String formContents) {
String key = id.toString();
String mesg =
'COMMAND=PUT&ARG=''+URLEncoder.encode(key+
delimiter+formContents+"\nendForm\n");
try {
URL target = new URL(protocol,host,port,cgi_script+
"?"+mesg);
URLConnection conn =
target.openConnection();
conn.setDoInput(true);
DataInputStream in = new DataInputStream(ccnn.getInputStream());
String line = in.readLine();
// find the start of the response boolean start = false;
while (!start) {
/* DEBUG */ System.out.println(line);
if (line==null) {
System.out.println("Broken Connection");
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 throw new NullPointerException();
}
else if (line.equals(startDelimiter)) {
start = true;
}
line = in.read~ine();
}
// read the response while (!line.equals(endDelimiter)) {
if (line.equalsIgnoreCase("true")) {
return truei }
else if(line.equalsIgnoreCase("false")) {
return false;
return false;
}
catch (Exception e) {
return false;
}
}
/**
* Gets the id's of all the forms in the form * database which are accessible to the user.
* The expected response from the server all them form id's seperated by * delimiters and the response is bounded by startDelimiter and endDelimiter * on separate linescp>
* i.e. startResponse\ncp>
* idl¦id21id3l...... \ncp>
* endResponse\ncp~
CA 0226663 j 1999 - 03 - 22 W098/13753 PCT~S97/17389 -:39-* @param The user who is requesting the form list * @return The form ids */
public FormID[] getFormList(String user) {
int formCount = 0;
String mesg =
~COMMAND=GETALL~ARG="+URLEncoder.encode(user+del imiter+"\n");
try {
URL target = new URL(protocol,host,port,cgi_script+
"?"+mesg);
URLConnection conn =
target.openConnection();
conn.setDoInput(true);
DataInputStream in = new DataInputStream(co:nn.getInputStream());
String line;
line=in.readLine();
// find the start of the response boolean start = false;
while (!start) ~
/* DEBUG */ System.out.println(line);
if (line==null) {
System.out.println("Broken Connection");
throw new NullPointerException();
}
else if(line.equals(startDelimiter)) {
start = true;
}
line = in.readLine();
CA 0226663~ 1999-03-22 WO 98/137~3 PCT~US97/1738g }
StringBuffer content = new StringBuffer();
// read the response while (true) {
/* DEBUG */ System.out.println(line);
if (line == null) {
// this should never occur // normally System.out.println("Broken Connection~
throw new NullPointerException();
}
else if(line.equals(endDelimiter)){
break;
}
else {
content.append(line+'~\n'~);
/* DEBUG */ System.out.println("CC :"*line);
line = in.readLine();
}
StringTokenizer st = new StringTokenizer(new String(content), RegiRequestHandler.delimiter);
int tokens = st.countTokens();
FormID[] ret = new FormID[tokens];
for (int i=0; ictokens; i++) {
String next = st.nextToken();
System.out.println("CC:
next="+next);
FormID id = new FormID(next);
if(id.getOwner() == null ll CA 0226663~ 1999-03-22 W098/137S3 PCT~S97/17389 id.getOwner().equals("null".) 11 id.getOwn.er().equals(user)) {
ret[formCount] = id;
formCount++;
}
}
return ret;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
/**
* This instructs the RegiServer to process a form * with some name-value pairs~p>
* The expected response is multiline bounded by - "startRequest" and * "endRequest" on separate lines.cp>
* oparam id : The form which is to be processed * ~param eventID: The event which caused the registration * @param attr : A string which contains the name-value pairs for * filling the form.
* ~return The result of processing the form */
public String request(FormID id, String eventID, String attr){
System.out.println("CC: REQ "+id+"
"+eventID+" "+attr);
String form_id = id.toString();
String mesg =
"COMMAND=REQ&ARG="+URLEncode:r.encode(form_id+delimiter+eve CA 0226663~ 1999-03-22 WO gB/13753 P~ J~97/17389 ntID+delimiter+attr+delimiter+ll\n~
try {
URL target = new URL(protocol,host,port,cgi_script+"?"+mesg);
URLConnection conn =
target.openConnection();
conn.setDoInput(true);
DataInputStream in = new DataInputStream(conn.getInputStream());
/* Get the single line response from * the server String buffer = in.readLine();
return buffer;
*/
// Get a multi-line response from the server // bounded by "startResponse" and "endResponse" on // separate lines StringBuffer content = new StringBuffer();
String line = in.readLine();
boolean start = false;
while (!start) {
if (line==null) {
System.out.println("Broken Connection");
throw new NullPointerException();
}
else if (line.equals(startDelimiter)) {
start = true;
}
line = in.readLine();
System.out.println("CC: "+line);
W O 98/137S3 PCTrUS97/17389 -~13-}
while (true) {
if (line == null) {
System.out.println("Broken Connection");
throw new Nul:LPointerException();
}
else if (line.equa:Ls~endDelimiter)) {
break;
}
else {
content append(line+"\n");
line = in.reaclLine();
- System.out.println("CC: "+line);
}
20System.out.print:ln("CC :"+new String(content));
return new String(content);
}
catch (Exception e) return null;
}
Execution Environment In order to run multiple CappletsTM simultaneously, the calendar applet prepares one environment for each CappletTM
and performs the following:
1. Create a new thread.
2. Execute the init( ) method with the thread.
3. Check whether the Capp].etTM has a panel by calling getConfigPanel(). If yes, add the panel to the view.
4. Execute the start method with the thread.
5. To exit, execute the stop( ) method.
API
/*
* Create a schedule item for a certain date.
* @ date - the date when the event is scheduled * @ detail - the detail of the event */
public final class CalEvent extends eRow {
public CalEvent(Strina owner, Date date, String detail) throws IllegalAccessException {
}
CA 0226663~ 1999-03-22 WO 98/13753 PCTAUS97/1738g -18-//
// Modify the privacy setting of this event.
// The possible values are "U"ser, "G"roup // and "W"orld. Only the owner of the event // can change the privacy value of the event.
// Otherwise, an exception will be thrown.
//
public setPrivacy(String value) throws IllegalAccessException {
}
//
// Check to see if a particular user is the // owner of this event.
//
public isOwner(String user) {
}
public set(String, key, Object value) {
}
public Object get(String key) {
}
//
// To determine if a date/time falls within // this event's time period. This facilitates // the use of multiple days event.
//
public boolean inside(WMDate date) {
}
}
//
// A container class which holds and manages a list -// of action objects associated with a specific // calendar event-schedule. Each action object in // the list is associated with an action type.
//
public final class ActionList extends HashTable {
public Action get(String actionType) {
CA 0226663~ 1999-03-22 W O 98/13753 PCTrUS97/17389 -:L9-}
public Object put(Object key, Object va~ue) {
}
}
// The Action class is a container class which // holds information and mea:ns to execute // Capplet~ or Agent.
//
public final class Action extends Object ~
// Create an Action object of a certain // action type.
public Action(String actionType) {
}
// Get the type of this action.
public final String getActionType() {
// The event that is associated with this // action.
public final CalEvent getEvent() {
}
// Is this an alert type of action?
public boolean isAlert() {
}
// Set the time in seconds when this action // should take place before the actual start // time. The default value is 0. Only an // action of ALERT type would be useful in // this case.
public final void setAlertBefore(long seconds) {
CA 0226663~ 1999-03-22 W 0 98/13753 PCT~US97/1738g }
// Set the DOMAIN in which this action should // take place. CappletsTM that are designed to // run on CLIENT domain may not suitable for // SERVER domain.
public final void setLocation(int location) {
}
public boolean isClientDomain() {
}
public boolean isServerDomain() {
}
public void init() }
public void start() {
}
public void stop() ~
}
public CappletTM getCappletTM() ~
}
}
This invention provides a process to run any Java applet on our Web Calendar. In other words, we claim the open ended characteristics of the overall calendar architecture.
The applet that can be associated with our Web Calendar events and run within our calendar context need not conform to any proprietary application programming interface (API) requirements. Just following the standard Java applet API
is enough to be able to associate with our calendar event and run within our calendar.
CA 0226663~ 1999-03-22 WO98113753 PCT~S97/17389 Java applets have its own common interface, which is defined in an abstract class called Applet. In order to run an applet within a Web calendar, the calendar platform applet must provide applet context for each applet. Our approach is to adopt an applet shell, which will serve as an applet context (See Figure 5).
For each applet to run, there are certain functions that the applet must call to prepare itself before running and coordinate computer resource with other processes while running. Our applet shell that is integrated with the Web Calendar provides these functions so that any applet can run within the Web Calendar views, instead of running in its own applet viewer independently.
API:
class CappletShell extends Panel implements Capplet~M
{
Applet applet = null;
Capplet~M Shell(Applet applet){
super();
this.applet = applet;
setLayout(new BorderLayout());
add("Center", this.applet);
}
public void setStub(App]etStub stub){
applet.setStub(stub);
}
public void initCapplet~M(CalEvent event, Hashtable param){
applet.init();
}
public void start() {
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 applet.start()i }
public void stop() {
applet.stop();
}
}
Common Interface Like Java appletTM, every Capplet'M must conform to a common interface. A Java interface is defined as follows:
public interface Capplet {
lS public void initCapplet'M(CalEvent event, Hashtable parameters);
public void start();
public void stop();
}
public interface ConfigurableCappletTM extends CappletTM {
public java.awt.Panel getConfigPanel(java.awt.Frame parentFrame);
public java.util.Hashtable getConfigParameters();
The object with the interface of Configurable Capplet'M
provides a panel and the system will then prepare a applet context for it.
This invention provides a process to facilitate the viewing and editing of multiple calendars, using a single calendar view ~See Figure 6). While the users are looking at a single calendar view (daily, multiple days, weekly, monthly, yearly or tasks), the schedule information may consist of one or many Web calendar(s). As the user moves the mouse pointer across the calendar view, the owner CA 0226663~ 1999-03-22 WO g8tl3753 rCT/US97117389 ~,3-information pertinent to the pointed calendar schedule will be displayed at the bottom oi- the calendar view.
In its embodiment, end-users can choose a collection of calendars to be displayed in a single calendar view. For each calendar selected and downloaded form the Internet/intranet, there is a corresponding menu push button displayed below the calendars. Via these menu buttons, users have the option to dynamically create any calendar combinations from the currently downloaded calendars.
The Web Calendar also provides the editing capability of multiple calendars to specific users. These users are given the authority by the calendar owners to update their calendar schedules, during t:heir absence or inability to update the calendars themselves.
API:
// Copyright (c) 199~-1998 WebMan Technologies, Inc.
//
// Code segment demonstrating Timecruiser calendar management.
// Get all the names of the user selected calendars.
// Hidden calendars included.
protected Vector getAllCalNames() ~
return (Vector)allCalNames.clone();
}
// Get all the names of the currently visible calendars.
protected Vector getVisibleCalNames() {
return (Vector)visibleCalNames.clone();
}
CA 0226663~ 1999-03-22 WO98/137~3 PCT~S97117389 // Add a series of calendars to be displayed.
public void addCalendars(Vector vec) {
if ( vec == null ) {
return;
}
for ( Enumeration enum=vec.elements();
enum.hasMoreElements(); ) {
String name = enum.nextElement().toString();
addCalendar(name,false);
}
lastUpdate = new Date();
if ( currentView != null ) {
currentView.updateView();
}
}
// Add a single calendar to be displayed.
public void addCalendar(String name) {
addCalendar(name,true);
}
// Add a calendar to be displayed. If the calendar is not visible, it // will mark to be visible.
protected void addCalendar(String name, boolean refresh) {
if ( !allCalNames.contains(name) ) {
allCalNames.addElement(name);
}
if ( !visibleCalNames.contains(name~ ) {
visibleCalNames.addElement(name~;
}
lastUpdate = new Date();
if ( refresh && currentView != null ) {
currentView.updateView();
CA 0226663~ 1999-03-22 W098/13753 PCT~S97/17389 -:25-}
// Remove a series of calendars from memory.
public boolean removeCalendars(Vector vec) {
if ( vec == null ) return false;
Vector bkupVec = new Vector();
for ( Enumeration enum=vec.elements();
enum.hasMoreElements(); ) {
String name = enum.nextElement().toString();
if ( !removeCalendar(name,false) ) {
addCalendars(bkupVec);
errorMsg = "Failed to remove "+name+".
Remove command rolled back.";
calendar.showStatus(errorMsg);
return false;
}
bkupVec.addElement(name);
}
lastUpdate = new Date();
if ( currentView != null ) {
currentView.updateView();
}
return true;
}
// Remove a single calendar.
public boolean removeCalendar(String name) {
return removeCalendar(name,true);
}
// Remove a single calendar from the cache.
protected boolean removeCalendar(String name, boolean refresh) {
int index = allCalNames indexOf(name);
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 if ( index < 0 ) {
return false;
}
allCalNames.removeElementAt(index);
index = visibleCalNames.indexOf(name);
if ( index ~= 0 ) {
visibleCalNames.removeElementAt(index);
}
lastUpdate = new Date();
if ( refresh && currentView != null ) {
currentView.updateView();
}
return true;
}
// Mark a calendar as visible and refresh the screen immediately.
// If the calendar is not already loaded, it will be loaded as well.
public boolean showCalendar(String name) {
if ( name == null ) {
return false;
}
if ( allCalNames.contains(name) ) {
if ( !visibleCalNames.contains(name) ) {
visibleCalNames.addElement(name);
if ( currentView != null ) {
lastUpdate = new Date();
currentView.updateView();
}
}
return true;
}
return false;
}
// Mark a calendar as hidden. Calendar data will NOT be CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 -,'7-unloaded.
public boolean hideCalenda:r(String name) {
if ( name == null ) {
return false;
}
if ( allCalNames.contains(name) ) {
int index;
if ( (index=visibleCalNames.indexOf(name))~=0 ) {
visibleCalNames.removeElementAt(index);
if ( currentView != null ) {
lastUpdate = new Date();
currentView.update'~iew();
}
}
return true;
}
return false;
}
This invention provides a process of user interaction to activate a program and run it in a panel whose dimension and location on the screen is dynamically specified. The process includes three steps of user interaction:
l. Select the window/panel based program by focusing on the icon and press the mouse button;
2. Move the mouse to coordinate (xl, yl) and press the mouse button; and~0 3. Drag the mouse to coordinate (x2, y2) and release the mouse button.
In its embodiment, the program is running within a display panel. In a further embod:iment, the display panel is a window based program.
Our process to invoke an appletTM and let the user specify CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 the ~im~n.~ions and location-on screen includes three steps of user interaction.
l. Select the Java program by focusing on the icon and press the mouse button.
2. Move the mouse to coordinate (xl, yl) and press the mouse button 3. Drag the mouse to coordinate (x2, y2) and release the mouse button.
This is a specific user interaction sequence to invoke our CappletslM or any Java applet (See Figure 7). To define the dimension and location for a previously selected Java program, user first chooses an upper left anchor corner of the applet viewer (xl, yl) by a mouse button press, followed by the mouse drag to the lower right corner (x2, y2).
Upon the user's release of the mouse button, a graphical panel with upper left corner of (xl, yl) and lower right corner of (x2, y2) is created and simultaneously the Java program is started within the newly created panel. The Java program can be an applet, a CappletrM or simply a Java application.
This invention provides a process to produce multimedia effects on a Web Calendar. We have achieved the effect of multimedia calendar events using Java language to implement the Web Calendar.
Separating from the conventional text based calendar event notification, our Web Calendar achieved the multimedia and animated graphic event expression capability. It is possible now to express a calendar event in animated graphics, video with audio effects.
The multimedia effect process is to facilitate Mulitimedia CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 Java applets to be able run in the context of a Web calendar. A Java applet, by definition, is run under a Java enabled Web browser context (referred to as an applet context) and can be programmed to produce multimedia effects. In embodiment, we use Java to implement a Web Calendar that, in turn, prc)vides all the Capplets~ with Java enabled Web browser context.
Our process provides the full applet context in which multimedia capability is included, in a calendar environment (Refer to Figure l, 3, 5, 8). This is accomplished by proliferating the applet running context for each cell within the ca:Lendar. Each cell on a common calendar monthly, weekly, multiple days or daily grid is capable of running its own CappletTM instance with multimedia effects, concurrently with other cell's or pop-up window's CappletTM instances.
See examples of multimedia calendar events cited in the Terminology Definition under CappletTM.
This invention provides a process that integrates transaction capability to scheduled events within Web Calendar. The process provides transaction over Internet, specifically via a Web Calendar event.
The process is to associate CappletTM that specializes in Internet transaction with Web Calendar event (See Figure 8). It provides users with the capability to make registrations or reservations for a scheduled event, directly in the Web Calendar. It accomplishes a sensible solution for users to make commitment to calendar events while surfing the net. This is a special embodiment of our CappletTM and the architecture is recited in Figure l. For example, during the query of Lincoln Center opera calendars, the user can actually activate a CappletTM that handles the seating arrangement and book tickets for the CA 0226663~ 1999-03-22 WO98/13753 P~ 7/17389 desired shows and, receive either rejection or confirm on the request.
The CappletTM invoked at client sites handles loading the pertinent registration form for the desired event, collecting the user preference information, sends the information to the server and receive server response for the user.
The server side process of the Web Calendar event transaction is responsible of receiving the registration CappletTM messages, locking up resources (seats, tickets, classes) and making sure there's only one booking per resource. After completing the request, server process will send back a message ind~cating the status of the request.
API:
/**
The RegiServer provides a Registration service whereby clients can request registration forms from a Form database, fill them out and the server will process the form and make a reservation.
*/
public class RegiServer implements Runnable {
protected ServerSocket sock;
public FormDB rdb;
public RegiServer(){
try {
sock = new ServerSocket(port);
}
catch (IOException e) {
System.out.println("Error Creating Socket .. exiting")i CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 _,1 System.exit(l);.
}
// opens the form dat:abase rdb = new FormDB("FormTable");
try {
rdb.open();
}
catch (Exception e) ~i System.out.print:Ln("Unable to open database");
}
run();
}
/**
All server actions are performed here. It waits for connections parses c:lient requests and issues appropriate calls to the database * @see RegiDB
* @see ClientComm */
public void run() {
}
/**
* Clean-Up : close the Form ~atabase */
public void finalize() {
rdb.close();
}
// This starts the registration server public static void main(String argv[]) }
/**
CA 0226663~ l999-03-22 W O 98/13753 PCT~US97/17389 * This handles the communication on the server side */
class ServerComm extends Thread {
public ServerComm(Socket sock, FormDB formDb) {
this.start();
}
public void run() {
/**
* Registration client cappletTM
*/~5 public class RegiClient extends AppletTM implements ConfigurableCappletTM ( public RegiClient() {
}
public RegiClient(FormID formId) {
}
/**
This function is required by the CappletTM interface * @param event This is the event associated with the capplet * @param table: Contains name-value pairs containing the parameters * for the registration */
public void initCappletTM(CalEvent event, Hashtable table) ~
this.eventId =(String)event.getIndexKey();
this.eventDesc =
(String)event.get(EventKey.EVENT_NOTE);
init()i }
CA 0226663~ 1999-03-22 WO98tl3753 PCTNS97/17389 public void init() ~
String formName = getParameter("FORMNAME");
String formOwner = getl?arameter("FORMOWNER");
formId = new FormID(formOwner, formName);
form = RegiConfig.getForm(formId);
form.setEvent(eventId,eventDesc);
setLayout(new BorderLayout());
add("Center", form);
public void start() {
}
public void stop () {
}
/**
* Returns registration form configuration * panel to calendar */
public Panel getConfig:Panel(Frame frame, CalEvent ev) {
config = new RegiConfig(user, frame);
return config;
}
/**
* Returns configuration parameters to * calendar */
public Hashtable getConfigParameters() {
class RegiConfig extends Panel {
/**
* Constructs config panel */
CA 0226663~ 1999-03-22 WO98113753 PCT~S97117389 RegiConfig(String user, Frame frame) {
this.frame = frame;
Panel topPnl = new Panel();
previewBtn = new Button("Preview ...");
topPnl.setLayout(new FlowLayout(FlowLayout.LEFT));
topPnl.add(new Label("Please select a registration form: "));
topPnl.add(previewBtn);
constructFormList(user);
setLayout(new BorderLayout());
add("North", topPnl);
add("Center", formList);
/**
* Constructs form name list for selection */
void constructFormList(String user) {
formIds = getFormIDs(user);
formList = new List();
for (int i = 0; i ~ formIds.length; i++) {
if (formIds[i] != null) ( System.out.println(formIds[i].getDescription());
formList.addItem(formIds[i].getDescription());
}
}
}
* Gets names of all forms available to user */
FormID[] getFormIDs(String user) {
CA 0226663~ 1999-03-22 W 0 98/13753 PCT~US97/17389 ClientComm comm = new .
ClientComm(Session.getHost(), Session.getPort());
return comm.getFormList(user);
}
/**
* Gets registration form ~object) by name */
static RegiForm getForm(FormID id) ClientComm comm = new ClientComm(Session.getHo'st(), Session.getPort());
RegiForm form = null;
return form;
}
/**
* Handles preview button */
public boolean action(Event evt, Object arg) {
if (evt.target == previewBtn) preview();
return true;
}
} // end of class class RegiPreview extends Dialog {
RegiPreview(Frame frame, RegiForm form) // modal dialog super(frame, "Form Prev:iew", true);
Panel btnPnl = new Pane:l();
btnPnl.setLayout(new FlowLayout(FlowLayout.CENTER));
btnPnl.add(new Button("OK"));
CA 0226663~ 1999-03-22 WO98113753 PCT~S97/17389 add("Center", form);
add("South", btnPnl~;
pack();
}
public boolean action(Event evt, Object arg) {
if ("OK".equals(arg)) dispose() return true;
}
/**
* This handles the communication on the client * side */
public class ClientComm {
// The protocol for the URLConnection // NOTE: This will need to be changed to https // for secure services public static final String protocolDefault = "http";
public ClientComm(String host, int port) {
}
public ClientComm(String protocol,String host, int port)( }
/**
* Saves the form to the form database. The * end of the form contents are delimited by * "endForm" on a new line.
* @param id: The identifier of the form which * is to be saved to the CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 * database.
* @param formContents: The content of the * Form as a String * @return true if the form is saved * successfully, false if the server was * unable to save the form or if there was a * communication error between server and * client * @see FormID
* @see RegiForm */
// It will be used by the Form database // administrator protected boolean saveForm(FormID id, String formContents) {
String key = id.toString();
String mesg =
'COMMAND=PUT&ARG=''+URLEncoder.encode(key+
delimiter+formContents+"\nendForm\n");
try {
URL target = new URL(protocol,host,port,cgi_script+
"?"+mesg);
URLConnection conn =
target.openConnection();
conn.setDoInput(true);
DataInputStream in = new DataInputStream(ccnn.getInputStream());
String line = in.readLine();
// find the start of the response boolean start = false;
while (!start) {
/* DEBUG */ System.out.println(line);
if (line==null) {
System.out.println("Broken Connection");
CA 0226663~ 1999-03-22 WO98/13753 PCT~S97/17389 throw new NullPointerException();
}
else if (line.equals(startDelimiter)) {
start = true;
}
line = in.read~ine();
}
// read the response while (!line.equals(endDelimiter)) {
if (line.equalsIgnoreCase("true")) {
return truei }
else if(line.equalsIgnoreCase("false")) {
return false;
return false;
}
catch (Exception e) {
return false;
}
}
/**
* Gets the id's of all the forms in the form * database which are accessible to the user.
* The expected response from the server all them form id's seperated by * delimiters and the response is bounded by startDelimiter and endDelimiter * on separate linescp>
* i.e. startResponse\ncp>
* idl¦id21id3l...... \ncp>
* endResponse\ncp~
CA 0226663 j 1999 - 03 - 22 W098/13753 PCT~S97/17389 -:39-* @param The user who is requesting the form list * @return The form ids */
public FormID[] getFormList(String user) {
int formCount = 0;
String mesg =
~COMMAND=GETALL~ARG="+URLEncoder.encode(user+del imiter+"\n");
try {
URL target = new URL(protocol,host,port,cgi_script+
"?"+mesg);
URLConnection conn =
target.openConnection();
conn.setDoInput(true);
DataInputStream in = new DataInputStream(co:nn.getInputStream());
String line;
line=in.readLine();
// find the start of the response boolean start = false;
while (!start) ~
/* DEBUG */ System.out.println(line);
if (line==null) {
System.out.println("Broken Connection");
throw new NullPointerException();
}
else if(line.equals(startDelimiter)) {
start = true;
}
line = in.readLine();
CA 0226663~ 1999-03-22 WO 98/137~3 PCT~US97/1738g }
StringBuffer content = new StringBuffer();
// read the response while (true) {
/* DEBUG */ System.out.println(line);
if (line == null) {
// this should never occur // normally System.out.println("Broken Connection~
throw new NullPointerException();
}
else if(line.equals(endDelimiter)){
break;
}
else {
content.append(line+'~\n'~);
/* DEBUG */ System.out.println("CC :"*line);
line = in.readLine();
}
StringTokenizer st = new StringTokenizer(new String(content), RegiRequestHandler.delimiter);
int tokens = st.countTokens();
FormID[] ret = new FormID[tokens];
for (int i=0; ictokens; i++) {
String next = st.nextToken();
System.out.println("CC:
next="+next);
FormID id = new FormID(next);
if(id.getOwner() == null ll CA 0226663~ 1999-03-22 W098/137S3 PCT~S97/17389 id.getOwner().equals("null".) 11 id.getOwn.er().equals(user)) {
ret[formCount] = id;
formCount++;
}
}
return ret;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
/**
* This instructs the RegiServer to process a form * with some name-value pairs~p>
* The expected response is multiline bounded by - "startRequest" and * "endRequest" on separate lines.cp>
* oparam id : The form which is to be processed * ~param eventID: The event which caused the registration * @param attr : A string which contains the name-value pairs for * filling the form.
* ~return The result of processing the form */
public String request(FormID id, String eventID, String attr){
System.out.println("CC: REQ "+id+"
"+eventID+" "+attr);
String form_id = id.toString();
String mesg =
"COMMAND=REQ&ARG="+URLEncode:r.encode(form_id+delimiter+eve CA 0226663~ 1999-03-22 WO gB/13753 P~ J~97/17389 ntID+delimiter+attr+delimiter+ll\n~
try {
URL target = new URL(protocol,host,port,cgi_script+"?"+mesg);
URLConnection conn =
target.openConnection();
conn.setDoInput(true);
DataInputStream in = new DataInputStream(conn.getInputStream());
/* Get the single line response from * the server String buffer = in.readLine();
return buffer;
*/
// Get a multi-line response from the server // bounded by "startResponse" and "endResponse" on // separate lines StringBuffer content = new StringBuffer();
String line = in.readLine();
boolean start = false;
while (!start) {
if (line==null) {
System.out.println("Broken Connection");
throw new NullPointerException();
}
else if (line.equals(startDelimiter)) {
start = true;
}
line = in.readLine();
System.out.println("CC: "+line);
W O 98/137S3 PCTrUS97/17389 -~13-}
while (true) {
if (line == null) {
System.out.println("Broken Connection");
throw new Nul:LPointerException();
}
else if (line.equa:Ls~endDelimiter)) {
break;
}
else {
content append(line+"\n");
line = in.reaclLine();
- System.out.println("CC: "+line);
}
20System.out.print:ln("CC :"+new String(content));
return new String(content);
}
catch (Exception e) return null;
}
Claims (20)
1. Capplet architecture recited in Figure 1, which can accommodate third-party Java applets readily and allows multiple Java programs to run simultaneously in a Web calendar.
2. A process to run Java applet on a Web Calendar based on the architecture's openness design.
3. A process of user interaction to activate a program that runs in a panel, of which dimension and location on the screen is dynamically specified comprising steps of:
a) selecting the window/panel based program by focusing on the icon and press the mouse button;
b) moving the mouse to coordinate (x1, y1) and press the mouse button; and c) dragging the mouse to coordinate (x2, y2) and release the mouse button.
a) selecting the window/panel based program by focusing on the icon and press the mouse button;
b) moving the mouse to coordinate (x1, y1) and press the mouse button; and c) dragging the mouse to coordinate (x2, y2) and release the mouse button.
4. A process to achieve the viewing and editing capability of joint multiple calendars on the Internet.
5. A process to produce multimedia effects on a Web Calendar by the architecture recited in Figure 1, using Java language to implement the Web Calendar to achieved the effect of multimedia calendar event contents.
6. A process that integrates transaction capability to scheduled events within Web Calendar and provides transaction over Internet.
7. A process of claim 6, wherein the transaction over Internet is via a Web Calendar event.
8. A method for multimedia information interaction with a user over a network which can be performed on a plurality of computing platforms, having an improved display memory allocation control and an improved display space utilization, comprising the steps of:
providing a network interface to a network to transfer at least one calander base from the network organized according to temporal information and having an open object architecture;
the at least one calendar base including a plurality of programs and a plurality of calendar events;
displaying the at least one calendar base;
providing an event interface for associating at least one of said plurality of programs with at least one of said plurality of calendar events; and providing a multimedia program interface for executing at least one of said plurality of programs using the at least one calendar base.
providing a network interface to a network to transfer at least one calander base from the network organized according to temporal information and having an open object architecture;
the at least one calendar base including a plurality of programs and a plurality of calendar events;
displaying the at least one calendar base;
providing an event interface for associating at least one of said plurality of programs with at least one of said plurality of calendar events; and providing a multimedia program interface for executing at least one of said plurality of programs using the at least one calendar base.
9. The process of claim 8 further comprising the step of:
providing a commerce program interface for interaction with electronic commerce applets.
providing a commerce program interface for interaction with electronic commerce applets.
10. A method for multimedia information interaction with a user over a network in an open architecture which can be performed on a plurality of computing platforms, having an improved display memory allocation control and an improved display space utilization, comprising the steps of:
providing a network interface to a network to transfer of at least one calendar base including a plurality of Capplets and a plurality of calendar events;
displaying the at least one calendar base organized according to temporal information;
providing a plurality of icons in the at least one calendar base corresponding to a plurality of views, each one of said plurality of views having at least one panel;
monitoring user input to select one of said plurality of views from said at least one calendar base;
modifying the at least one said calendar base to display the at least one panel associated with the one of said plurality of views selected;
providing a Capplet interface which creates each one of said plurality of Capplets by interfacing a corresponding plurality of applets with the at least one calendar base;
providing an association interface for associating at least one of said plurality of Capplets with at least one of said plurality of calendar event; and providing a multimedia interface for executing at least one of said plurality of Capplets or at least one of said plurality of calendar events.
providing a network interface to a network to transfer of at least one calendar base including a plurality of Capplets and a plurality of calendar events;
displaying the at least one calendar base organized according to temporal information;
providing a plurality of icons in the at least one calendar base corresponding to a plurality of views, each one of said plurality of views having at least one panel;
monitoring user input to select one of said plurality of views from said at least one calendar base;
modifying the at least one said calendar base to display the at least one panel associated with the one of said plurality of views selected;
providing a Capplet interface which creates each one of said plurality of Capplets by interfacing a corresponding plurality of applets with the at least one calendar base;
providing an association interface for associating at least one of said plurality of Capplets with at least one of said plurality of calendar event; and providing a multimedia interface for executing at least one of said plurality of Capplets or at least one of said plurality of calendar events.
11. The method of claim 10 further comprising the steps of:
providing a first multimedia interface for the at least one of said plurality of panel from which a plurality of calendar events or a plurality of Capplets can provide multimedia interaction with the user using the at least one calendar base;
providing a second multimedia interface for displaying one of said plurality of events or at least one of said plurality of Capplets outside of the at least one panel;
providing an instance interface for creating Capplet instances by associating one of said plurality of Capplets with one of said plurality of calendar events whereby the respective Capplet of the Capplet instance is executed using the first multimedia interface or the second multimedia interface; and providing an executive interface for executing a plurality of Capplets and a plurality of calendar events concurrently using multiple threads.
providing a first multimedia interface for the at least one of said plurality of panel from which a plurality of calendar events or a plurality of Capplets can provide multimedia interaction with the user using the at least one calendar base;
providing a second multimedia interface for displaying one of said plurality of events or at least one of said plurality of Capplets outside of the at least one panel;
providing an instance interface for creating Capplet instances by associating one of said plurality of Capplets with one of said plurality of calendar events whereby the respective Capplet of the Capplet instance is executed using the first multimedia interface or the second multimedia interface; and providing an executive interface for executing a plurality of Capplets and a plurality of calendar events concurrently using multiple threads.
12. The method of claim 11 further comprising the step of:
providing a plurality of calendar bases that run concurrently.
providing a plurality of calendar bases that run concurrently.
13. The method of claim 12 further comprising the steps of:
providing a data architecture such that a Capplet associated with a first calendar event modifies data that is used by a Capplet associated with a second calendar event; and providing an interface to concurrently modify at least one of said plurality Capplets or one of said plurality of calendar events over the network.
providing a data architecture such that a Capplet associated with a first calendar event modifies data that is used by a Capplet associated with a second calendar event; and providing an interface to concurrently modify at least one of said plurality Capplets or one of said plurality of calendar events over the network.
14. The method of claim 13 further comprising the step of:
providing an calendar event modification interface to monitor user input used to create, modify or delete one of said plurality of said calendar events.
providing an calendar event modification interface to monitor user input used to create, modify or delete one of said plurality of said calendar events.
15. The process of claim 11 further comprising the steps of:
providing an interface in the calendar base for the display and selection of a calendar events from a plurality of calendars having at least a subset of the same calendar events;
monitoring user input to select at least one of the calendars for display;
providing simultaneous display of the calendar events of each of the selected calendars.
providing an interface in the calendar base for the display and selection of a calendar events from a plurality of calendars having at least a subset of the same calendar events;
monitoring user input to select at least one of the calendars for display;
providing simultaneous display of the calendar events of each of the selected calendars.
16. The process of claim 11 further comprising the step of:
providing a user interface for the display and interaction with multimedia objects associated with the plurality of calendar events associated with the plurality of panels.
providing a user interface for the display and interaction with multimedia objects associated with the plurality of calendar events associated with the plurality of panels.
17. The process of claim 11 further comprising the step of:
providing a commerce Capplet interface for interaction with electronic commerce applets.
providing a commerce Capplet interface for interaction with electronic commerce applets.
18. A process to activate a program that is associated with an event having an improved display memory allocation control and an improved display utilization, comprising the steps of:
selecting an icon that is associated with the program on a screen;
defining a program display dimension having a dimension and a location on the screen dynamically specified;
the step of defining the program display dimension includes selecting a first coordinate (x1, y1) on the screen and selecting a second coordinate (x2, y2) on the screen; and wherein the program selected is activated when the second coordinate is selected.
selecting an icon that is associated with the program on a screen;
defining a program display dimension having a dimension and a location on the screen dynamically specified;
the step of defining the program display dimension includes selecting a first coordinate (x1, y1) on the screen and selecting a second coordinate (x2, y2) on the screen; and wherein the program selected is activated when the second coordinate is selected.
19. The process of claim 18 wherein:
the step of selecting an icon that is associated with the program on the screen further comprises using a mouse having at least one button to locate a mouse pointer on the icon and pressing the mouse button and then releasing the mouse button;
the step of selecting a first coordinate (x1, y1) on the screen further comprises moving the mouse to a first coordinate (x1, y1), which is a first point used to define the program display dimension and location on the screen, and pressing the mouse button; and the step of selecting a second coordinate (x2, y2) further comprises dragging the mouse to the second coordinate (x2, y2), while holding the mouse button down, which is a second point used to define the activated program display dimension and location on the screen, and releasing the mouse button, whereby the program selected is activated using the dynamically defined program display dimension defined by the first coordinate and the second coordinate and location on the screen.
the step of selecting an icon that is associated with the program on the screen further comprises using a mouse having at least one button to locate a mouse pointer on the icon and pressing the mouse button and then releasing the mouse button;
the step of selecting a first coordinate (x1, y1) on the screen further comprises moving the mouse to a first coordinate (x1, y1), which is a first point used to define the program display dimension and location on the screen, and pressing the mouse button; and the step of selecting a second coordinate (x2, y2) further comprises dragging the mouse to the second coordinate (x2, y2), while holding the mouse button down, which is a second point used to define the activated program display dimension and location on the screen, and releasing the mouse button, whereby the program selected is activated using the dynamically defined program display dimension defined by the first coordinate and the second coordinate and location on the screen.
20. A computer terminal, having an improved display memory allocation control and an improved display utilization, comprising:
a display for providing and receiving input data from a user;
a memory for storing data, the data including the input data and main applet object data;
a processor coupled to the display for providing a display organized using a Calendar object architecture in which the display is presented to the user according to a Calendar display in which the processor is coupled to the memory for storing the data;
a user input device coupled to the processor; and a network interface which connects the processor to a network.
a display for providing and receiving input data from a user;
a memory for storing data, the data including the input data and main applet object data;
a processor coupled to the display for providing a display organized using a Calendar object architecture in which the display is presented to the user according to a Calendar display in which the processor is coupled to the memory for storing the data;
a user input device coupled to the processor; and a network interface which connects the processor to a network.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/721,446 | 1996-09-27 | ||
US08/721,446 US6018343A (en) | 1996-09-27 | 1996-09-27 | Web calendar architecture and uses thereof |
PCT/US1997/017389 WO1998013753A1 (en) | 1996-09-27 | 1997-09-26 | A web calendar architecture and uses thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
CA2266635A1 true CA2266635A1 (en) | 1998-04-02 |
Family
ID=24898022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002266635A Abandoned CA2266635A1 (en) | 1996-09-27 | 1997-09-26 | A web calendar architecture and uses thereof |
Country Status (6)
Country | Link |
---|---|
US (3) | US6018343A (en) |
EP (1) | EP1008031A4 (en) |
JP (1) | JP2001502083A (en) |
AU (1) | AU745833B2 (en) |
CA (1) | CA2266635A1 (en) |
WO (1) | WO1998013753A1 (en) |
Families Citing this family (323)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6018343A (en) | 1996-09-27 | 2000-01-25 | Timecruiser Computing Corp. | Web calendar architecture and uses thereof |
US6185625B1 (en) * | 1996-12-20 | 2001-02-06 | Intel Corporation | Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object |
US6380953B1 (en) * | 1997-10-28 | 2002-04-30 | Nippon Steel Corporation | Method of display scrolling along a timebase and an apparatus for performing the method |
WO1999026174A1 (en) * | 1997-11-14 | 1999-05-27 | Casio Computer Co., Ltd. | Electronic mail system |
US6175861B1 (en) | 1998-02-06 | 2001-01-16 | Henry R. Williams, Jr. | Apparatus and method for providing computer display data from a computer system to a remote display device |
US6195797B1 (en) | 1998-02-06 | 2001-02-27 | Henry R. Williams, Jr. | Apparatus and method for providing computer display data from a computer system to a remote display device |
US6259443B1 (en) | 1998-02-06 | 2001-07-10 | Henry R. Williams, Jr. | Method and apparatus for enabling multiple users to concurrently access a remote server using set-top boxes |
US6202211B1 (en) | 1998-02-06 | 2001-03-13 | Henry R. Williams, Jr. | Method and apparatus for providing television signals to multiple viewing systems on a network |
US6810503B1 (en) * | 1998-02-11 | 2004-10-26 | Microsoft Corporation | Method and apparatus for controlling the timing of the invocation of events within a computer runtime environment |
US6834388B1 (en) | 1998-03-13 | 2004-12-21 | Iconics, Inc. | Process control |
US6636833B1 (en) | 1998-03-25 | 2003-10-21 | Obis Patents Ltd. | Credit card system and method |
US6338086B1 (en) * | 1998-06-11 | 2002-01-08 | Placeware, Inc. | Collaborative object architecture |
US20030120775A1 (en) * | 1998-06-15 | 2003-06-26 | Compaq Computer Corporation | Method and apparatus for sending address in the message for an e-mail notification action to facilitate remote management of network devices |
US6269341B1 (en) * | 1998-07-01 | 2001-07-31 | Day-Timers, Inc. | Method and system for printing individualized calendars |
JP2000057217A (en) * | 1998-08-10 | 2000-02-25 | Ibm Japan Ltd | Schedule display method, schedule changing method, schedule management system, schedule managing device, and storage medium storing schedule managing program |
US7127493B1 (en) | 1998-08-20 | 2006-10-24 | Gautier Taylor S | Optimizing server delivery of content by selective inclusion of optional data based on optimization criteria |
US6262725B1 (en) * | 1998-09-10 | 2001-07-17 | International Business Machines Corporation | Method for displaying holidays in a locale-sensitive manner across distributed computer enterprise locales |
US6111572A (en) * | 1998-09-10 | 2000-08-29 | International Business Machines Corporation | Runtime locale-sensitive switching of calendars in a distributed computer enterprise environment |
JP2000090151A (en) * | 1998-09-10 | 2000-03-31 | Ibm Japan Ltd | Schedule display and change method, schedule management device and storage medium storing schedule management program |
WO2000018146A1 (en) * | 1998-09-24 | 2000-03-30 | Ericsson Inc. | Scheduling application |
US6687874B2 (en) * | 1998-10-05 | 2004-02-03 | Nexpress Solutions Llc | System for generating and maintaining field service publications |
ATE262189T1 (en) | 1998-10-16 | 2004-04-15 | Iconics Inc | PROCESS CONTROL |
EP1185928A1 (en) | 1998-12-16 | 2002-03-13 | Kent Ridge Digital Labs | Process oriented computing environment |
US7216300B2 (en) | 1998-12-30 | 2007-05-08 | Ncr Corp. | Method and apparatus for an applet to display multiple windows |
US7017116B2 (en) * | 1999-01-06 | 2006-03-21 | Iconics, Inc. | Graphical human-machine interface on a portable device |
US6369840B1 (en) * | 1999-03-10 | 2002-04-09 | America Online, Inc. | Multi-layered online calendaring and purchasing |
AU4218800A (en) * | 1999-04-12 | 2000-11-14 | Launchpad Software Inc. | System and method of providing consolidated internet event guide |
WO2000062259A1 (en) * | 1999-04-13 | 2000-10-19 | Orbis Patents Limited | Person-to-person, person-to-business, business-to-person, and business-to-business financial transaction system |
US7454361B1 (en) | 1999-04-22 | 2008-11-18 | Ceats, Inc. | Individual seat selection ticketing and reservation system |
US6543011B1 (en) * | 1999-07-15 | 2003-04-01 | International Business Machines Corporation | Method for event recording in java |
US6532023B1 (en) * | 1999-08-12 | 2003-03-11 | International Business Machines Corporation | Recording selected applet events of a user interaction sequence |
US6549216B1 (en) * | 1999-08-12 | 2003-04-15 | International Business Machines Corporation | Preserving, emulating, and manipulating user interaction event timing |
SG85127A1 (en) * | 1999-08-17 | 2001-12-19 | Earth9 Com Pte Ltd | Method and apparatus for collaborative information management |
US8015049B1 (en) * | 1999-08-18 | 2011-09-06 | S.F. Ip Properties 61 Llc | On-line appointment system |
US6449498B1 (en) * | 1999-08-23 | 2002-09-10 | Qualcomm, Incorporated | Method and system for dynamically updating a banner for a communication device |
WO2001016834A1 (en) * | 1999-08-27 | 2001-03-08 | Kelly Patrick J | Method and system for early detection of disease |
US6611275B1 (en) * | 1999-08-31 | 2003-08-26 | Worldcom, Inc. | Method of and apparatus for communicating and scheduling change requests |
AU1570801A (en) * | 1999-10-16 | 2001-04-30 | Iceberg International, Inc. | Information management system for remote computing platforms |
US20050027580A1 (en) * | 1999-12-01 | 2005-02-03 | Richard Crici | Internet-based appointment scheduling system |
JP4046915B2 (en) * | 1999-12-03 | 2008-02-13 | キヤノン株式会社 | CALENDAR DISPLAY DEVICE HAVING DATE SELECTION FUNCTION, CALENDAR DISPLAY METHOD, AND RECORDING MEDIUM CONTAINING CALENDAR DISPLAY CONTROL PROGRAM |
US6728530B1 (en) * | 1999-12-28 | 2004-04-27 | Nokia Corporation | Calendar-display apparatus, and associated method, for a mobile terminal |
EP1115076A1 (en) * | 2000-01-06 | 2001-07-11 | Venner, Alan J. | A reminder and actioning system |
US7003720B1 (en) * | 2000-01-07 | 2006-02-21 | Abf Freight Sysems. Inc. | Electronic shipment planner |
US7337210B2 (en) * | 2000-01-13 | 2008-02-26 | International Business Machines Corporation | Method and apparatus for determining availability of a user of an instant messaging application |
US7072934B2 (en) * | 2000-01-14 | 2006-07-04 | Saba Software, Inc. | Method and apparatus for a business applications server management system platform |
US20020049788A1 (en) * | 2000-01-14 | 2002-04-25 | Lipkin Daniel S. | Method and apparatus for a web content platform |
WO2001055910A2 (en) * | 2000-01-27 | 2001-08-02 | American Express Travel Related Services Company, Inc. | Information architecture for an interactive environment |
WO2001063391A2 (en) * | 2000-02-24 | 2001-08-30 | Tvgrid, Inc. | Web-driven calendar updating system |
CN1630868A (en) * | 2000-04-18 | 2005-06-22 | 惠普公司 | Activity report generation |
AU2001264677A1 (en) * | 2000-05-22 | 2001-12-03 | Michael J. Gaughan | Method for contacting customers and prospective customers |
US6823357B1 (en) * | 2000-06-27 | 2004-11-23 | Intel Corporation | System for automating event scheduling and subscription using an HTTP based event publish server |
US7174303B2 (en) * | 2000-07-31 | 2007-02-06 | Uappoint, Inc | Customer driven, sponsor controlled network-based graphical scheduling system and method |
US7166078B2 (en) * | 2000-08-10 | 2007-01-23 | The Procter & Gamble Company | System and method for providing information based on menstrual data |
AU6763200A (en) * | 2000-08-10 | 2001-06-12 | Procter & Gamble | System and method for providing information based on menstrual data |
US7840691B1 (en) | 2000-09-07 | 2010-11-23 | Zamora Radio, Llc | Personal broadcast server system for providing a customized broadcast |
US20020032589A1 (en) * | 2000-09-13 | 2002-03-14 | Infospace, Inc. | System and method for providing an advanced personal information manager |
US6640230B1 (en) * | 2000-09-27 | 2003-10-28 | International Business Machines Corporation | Calendar-driven application technique for preparing responses to incoming events |
US6988128B1 (en) * | 2000-09-27 | 2006-01-17 | International Business Machines Corporation | Calendar events and calendar-driven application technique |
US6820096B1 (en) * | 2000-11-07 | 2004-11-16 | International Business Machines Corporation | Smart calendar |
US7721210B2 (en) * | 2000-11-29 | 2010-05-18 | Nokia Corporation | Electronic calendar system |
US20050278641A1 (en) * | 2000-11-30 | 2005-12-15 | Steve Mansour | Javascript Calendar Application Delivered to a Web Browser |
US20020116232A1 (en) * | 2000-12-18 | 2002-08-22 | Rapp Larry J. | System and method for interactive scheduling |
US20020140726A1 (en) * | 2000-12-22 | 2002-10-03 | Schwartz Richard L. | Method and system for facilitating mediated communication |
US20020091732A1 (en) * | 2000-12-29 | 2002-07-11 | Pedro Justin E. | Displaying forms and content in a browser |
US7146602B2 (en) * | 2001-01-16 | 2006-12-05 | Ajile Systems, Inc. | Builder tool and interface for system supporting multiple virtual machines |
US7533051B2 (en) * | 2001-02-06 | 2009-05-12 | Oracle International Corporation | Method and system for implementing automatic bid status refresh and item attribute updates in an electronic exchange |
US20020161756A1 (en) * | 2001-02-28 | 2002-10-31 | Fesq William Mcbride | System and method for performing local searhces across user defined events |
US20020143600A1 (en) * | 2001-03-08 | 2002-10-03 | Dugan Valerie G. | Internet-based appointment scheduling |
US20020133374A1 (en) * | 2001-03-13 | 2002-09-19 | Agoni Anthony Angelo | System and method for facilitating services |
US7024662B2 (en) * | 2001-03-14 | 2006-04-04 | Microsoft Corporation | Executing dynamically assigned functions while providing services |
US20030061365A1 (en) * | 2001-03-14 | 2003-03-27 | Microsoft Corporation | Service-to-service communication for network services |
US20030041065A1 (en) * | 2001-03-14 | 2003-02-27 | Mark Lucovsky | Schema-based services for identity-based access to contacts data |
US20030041076A1 (en) * | 2001-03-14 | 2003-02-27 | Lucovsky Mark H. | Schema-based services for identity-based access to calendar data |
US7302634B2 (en) * | 2001-03-14 | 2007-11-27 | Microsoft Corporation | Schema-based services for identity-based data access |
US20030069887A1 (en) * | 2001-03-14 | 2003-04-10 | Lucovsky Mark H. | Schema-based services for identity-based access to inbox data |
US20030050911A1 (en) * | 2001-03-14 | 2003-03-13 | Mark Lucovsky | Schema-based services for identity-based access to profile data |
US7003735B2 (en) * | 2001-03-29 | 2006-02-21 | International Business Machines Corporation | Calendar desktop graphical user interface (GUI) for computer workstations, personal computers, and personal digital assistants |
US20020163538A1 (en) * | 2001-05-07 | 2002-11-07 | Koninklijke Philips Electronics N.V. | Electronic mail guide |
US7962482B2 (en) | 2001-05-16 | 2011-06-14 | Pandora Media, Inc. | Methods and systems for utilizing contextual feedback to generate and modify playlists |
US20060206478A1 (en) * | 2001-05-16 | 2006-09-14 | Pandora Media, Inc. | Playlist generating methods |
US20060212442A1 (en) * | 2001-05-16 | 2006-09-21 | Pandora Media, Inc. | Methods of Presenting and Providing Content to a User |
US20070038632A1 (en) * | 2001-05-31 | 2007-02-15 | Engstrom G E | Time slot based calendar access control |
US10592901B2 (en) * | 2001-06-04 | 2020-03-17 | Orbis Patents, Ltd. | Business-to-business commerce using financial transaction numbers |
US6658427B2 (en) | 2001-06-12 | 2003-12-02 | International Business Machines Corporation | Method and system for providing multi-user electronic calendaring and scheduling functions for online instruction in an extended enterprise environment |
US6826729B1 (en) * | 2001-06-29 | 2004-11-30 | Microsoft Corporation | Gallery user interface controls |
US7133900B1 (en) * | 2001-07-06 | 2006-11-07 | Yahoo! Inc. | Sharing and implementing instant messaging environments |
US7275026B2 (en) * | 2001-07-18 | 2007-09-25 | The Mathworks, Inc. | Implicit frame-based processing for block-diagram simulation |
JP4543593B2 (en) * | 2001-07-26 | 2010-09-15 | ブラザー工業株式会社 | Printing device |
JP4543592B2 (en) * | 2001-07-26 | 2010-09-15 | ブラザー工業株式会社 | Printing device |
US7200590B2 (en) * | 2001-08-15 | 2007-04-03 | Yahoo! Inc. | Data sharing |
US6907582B2 (en) * | 2001-09-27 | 2005-06-14 | Intel Corporation | Communication of information through background modulation in an information display |
US7035913B2 (en) * | 2001-09-28 | 2006-04-25 | Hewlett-Packard Development Company, L.P. | System for collection and distribution of calendar information |
US20030065677A1 (en) * | 2001-09-28 | 2003-04-03 | Culp Jerlyn R. | Electronic calendaring device |
US6907451B1 (en) * | 2001-09-29 | 2005-06-14 | Siebel Systems, Inc. | Method, apparatus, and system for immediate posting of changes in a client server environment |
US7146617B2 (en) | 2001-09-29 | 2006-12-05 | Siebel Systems, Inc. | Method, apparatus, and system for implementing view caching in a framework to support web-based applications |
US8359335B2 (en) | 2001-09-29 | 2013-01-22 | Siebel Systems, Inc. | Computing system and method to implicitly commit unsaved data for a world wide web application |
US7885996B2 (en) * | 2001-09-29 | 2011-02-08 | Siebel Systems, Inc. | Method, apparatus, and system for implementing notifications in a framework to support web-based applications |
US7203948B2 (en) * | 2001-09-29 | 2007-04-10 | Siebel Systems, Inc. | Method, apparatus, and system for implementing caching of view custom options in a framework to support web-based applications |
US20030065545A1 (en) * | 2001-10-01 | 2003-04-03 | Barry Lynn | Appointment system for new home buyers |
US7870492B2 (en) | 2001-10-02 | 2011-01-11 | Siebel Systems, Inc. | Method, apparatus, and system for managing commands in a client server environment |
US20040148354A1 (en) * | 2001-11-16 | 2004-07-29 | John Saare | Method and system for an extensible client specific mail application in a portal server |
US20040122915A1 (en) * | 2001-11-28 | 2004-06-24 | John Saare | Method and system for an extensible client specific calendar application in a portal server |
US6965900B2 (en) * | 2001-12-19 | 2005-11-15 | X-Labs Holdings, Llc | Method and apparatus for electronically extracting application specific multidimensional information from documents selected from a set of documents electronically extracted from a library of electronically searchable documents |
US20030154116A1 (en) * | 2002-01-04 | 2003-08-14 | Lofton Jeffrey C. | System and method for scheduling events on an internet based calendar |
US7305700B2 (en) | 2002-01-08 | 2007-12-04 | Seven Networks, Inc. | Secure transport for mobile communication network |
US7039596B1 (en) * | 2002-01-18 | 2006-05-02 | America Online, Inc. | Calendar overlays |
US7376605B2 (en) * | 2002-02-06 | 2008-05-20 | Fx Alliance, Llc | Electronic market calendar for displaying standard settlement dates, future market-related events and holidays pertaining to a financial transaction |
US7167910B2 (en) * | 2002-02-20 | 2007-01-23 | Microsoft Corporation | Social mapping of contacts from computer communication information |
US7343365B2 (en) * | 2002-02-20 | 2008-03-11 | Microsoft Corporation | Computer system architecture for automatic context associations |
US7296232B1 (en) | 2002-04-01 | 2007-11-13 | Microsoft Corporation | Calendar control for selection of time periods to filter data |
US20030217032A1 (en) * | 2002-05-16 | 2003-11-20 | Dick Fritzler | System and method for providing business strategy and compliance information |
US7865387B2 (en) * | 2002-05-23 | 2011-01-04 | Aol Inc. | Method and system for scheduling a meeting for a set of attendees via a special attendee |
US20040034388A1 (en) * | 2002-06-14 | 2004-02-19 | Healing Machines, Inc. | Apparatus and method for physiological treatment with electromagnetic energy |
US7171625B1 (en) * | 2002-06-18 | 2007-01-30 | Actify, Inc. | Double-clicking a point-and-click user interface apparatus to enable a new interaction with content represented by an active visual display element |
US7359946B2 (en) * | 2002-06-21 | 2008-04-15 | Atul Thakkar | System and method for an event planner |
US20040001108A1 (en) * | 2002-06-26 | 2004-01-01 | International Business Machines Corporation | Calendar control |
US9886309B2 (en) | 2002-06-28 | 2018-02-06 | Microsoft Technology Licensing, Llc | Identity-based distributed computing for device resources |
US7206788B2 (en) * | 2002-07-30 | 2007-04-17 | Microsoft Corporation | Schema-based services for identity-based access to device data |
US7814055B2 (en) * | 2002-08-28 | 2010-10-12 | Apple Inc. | Method of managing a calendar and a computer system for implementing that method |
EP1546972A1 (en) * | 2002-09-09 | 2005-06-29 | Apple Computer, Inc. | A computer program comprising a plurality of calendars |
AU2003263107A1 (en) * | 2002-09-09 | 2004-03-29 | Apple Computer, Inc. | A method of managing a calendar and a computer system for implementing that method |
US8359540B2 (en) * | 2002-10-09 | 2013-01-22 | Goldman, Sachs & Co. | Apparatus, methods, and articles of manufacture for constructing and maintaining a calendaring interface |
US20040085578A1 (en) * | 2002-11-03 | 2004-05-06 | Quek Su Mien | Producing personalized photo calendar |
US6937950B2 (en) * | 2002-12-26 | 2005-08-30 | International Business Machines Corporation | Animated graphical object notification system |
US8468126B2 (en) * | 2005-08-01 | 2013-06-18 | Seven Networks, Inc. | Publishing data in an information community |
US7853563B2 (en) * | 2005-08-01 | 2010-12-14 | Seven Networks, Inc. | Universal data aggregation |
US7917468B2 (en) | 2005-08-01 | 2011-03-29 | Seven Networks, Inc. | Linking of personal information management data |
US7584114B2 (en) * | 2003-01-22 | 2009-09-01 | International Business Machines Corporation | System and method for integrating projects events with personal calendar and scheduling clients |
US20040169688A1 (en) * | 2003-02-27 | 2004-09-02 | Microsoft Corporation | Multi-directional display and navigation of hierarchical data and optimization of display area consumption |
US20040199412A1 (en) * | 2003-03-14 | 2004-10-07 | Mccauley Stephen F. | Internet-based scheduling method and system for service providers and users |
US7730014B2 (en) * | 2003-03-25 | 2010-06-01 | Hartenstein Mark A | Systems and methods for managing affiliations |
US7424684B2 (en) * | 2003-04-15 | 2008-09-09 | The Mathworks, Inc. | Frames in block diagram modeling |
US7590695B2 (en) | 2003-05-09 | 2009-09-15 | Aol Llc | Managing electronic messages |
US20040247624A1 (en) * | 2003-06-05 | 2004-12-09 | Unger Evan Charles | Methods of making pharmaceutical formulations for the delivery of drugs having low aqueous solubility |
US7739602B2 (en) | 2003-06-24 | 2010-06-15 | Aol Inc. | System and method for community centric resource sharing based on a publishing subscription model |
US9715678B2 (en) * | 2003-06-26 | 2017-07-25 | Microsoft Technology Licensing, Llc | Side-by-side shared calendars |
US7707255B2 (en) | 2003-07-01 | 2010-04-27 | Microsoft Corporation | Automatic grouping of electronic mail |
US8799808B2 (en) * | 2003-07-01 | 2014-08-05 | Microsoft Corporation | Adaptive multi-line view user interface |
US7716593B2 (en) | 2003-07-01 | 2010-05-11 | Microsoft Corporation | Conversation grouping of electronic mail records |
US20050005249A1 (en) * | 2003-07-01 | 2005-01-06 | Microsoft Corporation | Combined content selection and display user interface |
US7392249B1 (en) * | 2003-07-01 | 2008-06-24 | Microsoft Corporation | Methods, systems, and computer-readable mediums for providing persisting and continuously updating search folders |
US20050050456A1 (en) * | 2003-08-29 | 2005-03-03 | Dehamer Brian James | Method and apparatus for supporting XML-based service consumption in a web presentation architecture |
US20050076329A1 (en) * | 2003-10-01 | 2005-04-07 | Christina Hsu | Method and apparatus for supporting configuration of a web application in a web presentation architecture |
US20050076294A1 (en) * | 2003-10-01 | 2005-04-07 | Dehamer Brian James | Method and apparatus for supporting layout management in a web presentation architecture |
US20050076291A1 (en) * | 2003-10-01 | 2005-04-07 | Yee Sunny K. | Method and apparatus for supporting page localization management in a Web presentation architecture |
US7146544B2 (en) * | 2003-10-01 | 2006-12-05 | Hewlett-Packard Development Company, L.P. | Method and apparatus for supporting error handling in a web presentation architecture |
US20050086292A1 (en) * | 2003-10-01 | 2005-04-21 | Yee Sunny K. | Method and apparatus for supporting preprocessing in a Web presentation architecture |
US20050086664A1 (en) * | 2003-10-01 | 2005-04-21 | Sundaresan Sankar R. | Method and apparatus for transaction tracking in a web presentation architecture |
US20050091336A1 (en) * | 2003-10-01 | 2005-04-28 | Dehamer Brian J. | Method and apparatus for supporting cookie management in a web presentation architecture |
US20050081154A1 (en) * | 2003-10-14 | 2005-04-14 | Jeff Vogel | System, method and apparatus for software generated slide show |
US10437964B2 (en) | 2003-10-24 | 2019-10-08 | Microsoft Technology Licensing, Llc | Programming interface for licensing |
US20050108643A1 (en) * | 2003-11-17 | 2005-05-19 | Nokia Corporation | Topographic presentation of media files in a media diary application |
US7109848B2 (en) * | 2003-11-17 | 2006-09-19 | Nokia Corporation | Applications and methods for providing a reminder or an alert to a digital media capture device |
US8010579B2 (en) | 2003-11-17 | 2011-08-30 | Nokia Corporation | Bookmarking and annotating in a media diary application |
US8990255B2 (en) * | 2003-11-17 | 2015-03-24 | Nokia Corporation | Time bar navigation in a media diary application |
US20050108234A1 (en) * | 2003-11-17 | 2005-05-19 | Nokia Corporation | Speed browsing of media items in a media diary application |
US20050105374A1 (en) * | 2003-11-17 | 2005-05-19 | Nokia Corporation | Media diary application for use with digital device |
US20050114777A1 (en) * | 2003-11-26 | 2005-05-26 | Yahoo, Inc. | Calendar integration with instant messaging |
US7451190B2 (en) * | 2003-11-26 | 2008-11-11 | Yahoo! Inc. | Associating multiple visibility profiles with a user of a real-time communication system |
US7774718B2 (en) * | 2003-12-17 | 2010-08-10 | Nokia Corporation | Time handle in a media diary application for accessing media files |
FI116764B (en) * | 2003-12-22 | 2006-02-15 | Nokia Corp | Method for Sharing Calendar Content in a Communication System, a Communication System, and a Terminal |
US20050185102A1 (en) * | 2004-01-06 | 2005-08-25 | Fairhurst Jon A. | Single touch launch of remote applications over video |
US20050187943A1 (en) * | 2004-02-09 | 2005-08-25 | Nokia Corporation | Representation of media items in a media file management application for use with a digital device |
US7197502B2 (en) * | 2004-02-18 | 2007-03-27 | Friendly Polynomials, Inc. | Machine-implemented activity management system using asynchronously shared activity data objects and journal data items |
US20050197894A1 (en) * | 2004-03-02 | 2005-09-08 | Adam Fairbanks | Localized event server apparatus and method |
US7555707B1 (en) | 2004-03-12 | 2009-06-30 | Microsoft Corporation | Method and system for data binding in a block structured user interface scripting language |
GB0406076D0 (en) * | 2004-03-17 | 2004-04-21 | Guaranteed Markets Ltd | A transaction management system and method |
US7814231B2 (en) * | 2004-05-24 | 2010-10-12 | Apple Inc. | Method of synchronizing between three or more devices |
US7877356B1 (en) | 2004-05-24 | 2011-01-25 | Apple Inc. | Retaining intermediate states of shared groups of objects and notification of changes to shared groups of objects |
US7383291B2 (en) * | 2004-05-24 | 2008-06-03 | Apple Inc. | Method for sharing groups of objects |
US7809682B2 (en) * | 2004-05-24 | 2010-10-05 | Apple Inc. | Data synchronization between multiple devices |
US7991637B1 (en) | 2004-05-24 | 2011-08-02 | Apple Inc. | Freeform communication in calendaring system |
US20060010218A1 (en) * | 2004-06-11 | 2006-01-12 | Turcotte William E Ii | Automatic and confirmed message receipt |
US20050286428A1 (en) * | 2004-06-28 | 2005-12-29 | Nokia Corporation | Timeline management of network communicated information |
US8255828B2 (en) | 2004-08-16 | 2012-08-28 | Microsoft Corporation | Command user interface for displaying selectable software functionality controls |
US7703036B2 (en) | 2004-08-16 | 2010-04-20 | Microsoft Corporation | User interface for displaying selectable software functionality controls that are relevant to a selected object |
US9015621B2 (en) * | 2004-08-16 | 2015-04-21 | Microsoft Technology Licensing, Llc | Command user interface for displaying multiple sections of software functionality controls |
US8146016B2 (en) | 2004-08-16 | 2012-03-27 | Microsoft Corporation | User interface for displaying a gallery of formatting options applicable to a selected object |
US7895531B2 (en) | 2004-08-16 | 2011-02-22 | Microsoft Corporation | Floating command object |
US8117542B2 (en) * | 2004-08-16 | 2012-02-14 | Microsoft Corporation | User interface for displaying selectable software functionality controls that are contextually relevant to a selected object |
US7747966B2 (en) * | 2004-09-30 | 2010-06-29 | Microsoft Corporation | User interface for providing task management and calendar information |
US7441271B2 (en) | 2004-10-20 | 2008-10-21 | Seven Networks | Method and apparatus for intercepting events in a communication system |
US8010082B2 (en) | 2004-10-20 | 2011-08-30 | Seven Networks, Inc. | Flexible billing architecture |
US7706781B2 (en) | 2004-11-22 | 2010-04-27 | Seven Networks International Oy | Data security in a mobile e-mail service |
FI117152B (en) | 2004-12-03 | 2006-06-30 | Seven Networks Internat Oy | E-mail service provisioning method for mobile terminal, involves using domain part and further parameters to generate new parameter set in list of setting parameter sets, if provisioning of e-mail service is successful |
TWI286699B (en) * | 2005-02-18 | 2007-09-11 | Compal Electronics Inc | A method and apparatus for displaying real-time messages by a mouse cursor |
US20060190812A1 (en) * | 2005-02-22 | 2006-08-24 | Geovector Corporation | Imaging systems including hyperlink associations |
US8316315B2 (en) | 2005-02-28 | 2012-11-20 | Microsoft Corporation | Automatically generated highlight view of electronic interactions |
US20060206522A1 (en) * | 2005-03-11 | 2006-09-14 | Xerox Corporation | Electronic calendar systems and methods |
US7877703B1 (en) | 2005-03-14 | 2011-01-25 | Seven Networks, Inc. | Intelligent rendering of information in a limited display environment |
US9454762B2 (en) * | 2005-03-18 | 2016-09-27 | Samuel Robert Gaidemak | System and method for the delivery of content to a networked device |
US7774476B2 (en) * | 2005-04-01 | 2010-08-10 | Sap Aktiengesellschaft | Methods and systems for exchanging data using one communication channel between a server and a client to display content in multiple windows on a client |
US20060224996A1 (en) * | 2005-04-01 | 2006-10-05 | Zeno Rummler | Methods and systems for simplified point-and-click data entry |
US8438633B1 (en) | 2005-04-21 | 2013-05-07 | Seven Networks, Inc. | Flexible real-time inbox access |
US7796742B1 (en) | 2005-04-21 | 2010-09-14 | Seven Networks, Inc. | Systems and methods for simplified provisioning |
WO2006123957A1 (en) * | 2005-05-20 | 2006-11-23 | Achievement Nz Limited | Scheduling and calendar system |
US7886290B2 (en) * | 2005-06-16 | 2011-02-08 | Microsoft Corporation | Cross version and cross product user interface |
WO2006136660A1 (en) | 2005-06-21 | 2006-12-28 | Seven Networks International Oy | Maintaining an ip connection in a mobile network |
US20070005408A1 (en) * | 2005-06-30 | 2007-01-04 | International Business Machines Corporation | Method and structure for agenda based scheduling using sub-events with automated management functions |
US20070005409A1 (en) * | 2005-06-30 | 2007-01-04 | International Business Machines Corporation | Method and structure for overriding calendar entries based on context and business value |
US20070038495A1 (en) * | 2005-07-30 | 2007-02-15 | Miner Daniel J | Online web based organizer |
US8069166B2 (en) * | 2005-08-01 | 2011-11-29 | Seven Networks, Inc. | Managing user-to-user contact with inferred presence information |
US8239882B2 (en) * | 2005-08-30 | 2012-08-07 | Microsoft Corporation | Markup based extensibility for user interfaces |
US8689137B2 (en) * | 2005-09-07 | 2014-04-01 | Microsoft Corporation | Command user interface for displaying selectable functionality controls in a database application |
US9542667B2 (en) * | 2005-09-09 | 2017-01-10 | Microsoft Technology Licensing, Llc | Navigating messages within a thread |
US8627222B2 (en) | 2005-09-12 | 2014-01-07 | Microsoft Corporation | Expanded search and find user interface |
US7739259B2 (en) | 2005-09-12 | 2010-06-15 | Microsoft Corporation | Integrated search and find user interface |
US8914733B2 (en) * | 2005-10-04 | 2014-12-16 | International Business Machines Corporation | User interface widget unit sharing for application user interface distribution |
TW200717264A (en) * | 2005-10-18 | 2007-05-01 | Inst Information Industry | Method/system managing schedules according to Internet information and storage medium saving the program executing this method |
US8200699B2 (en) * | 2005-12-01 | 2012-06-12 | Microsoft Corporation | Secured and filtered personal information publishing |
WO2007117298A2 (en) | 2005-12-30 | 2007-10-18 | Public Display, Inc. | Event data translation system |
US8074175B2 (en) * | 2006-01-06 | 2011-12-06 | Microsoft Corporation | User interface for an inkable family calendar |
US20070180377A1 (en) * | 2006-01-30 | 2007-08-02 | Microsoft Corporation | Self-translating template |
US20070180375A1 (en) * | 2006-01-31 | 2007-08-02 | Microsoft Corporation | Template format for calendars |
US7769395B2 (en) | 2006-06-20 | 2010-08-03 | Seven Networks, Inc. | Location-based operations and messaging |
US7668838B2 (en) * | 2006-03-28 | 2010-02-23 | Yahoo! Inc. | Providing event information to third party event applications |
US7676449B2 (en) * | 2006-03-28 | 2010-03-09 | Yahoo! Inc. | Creating and viewing private events in an events repository |
AU2007253725A1 (en) * | 2006-05-18 | 2007-11-29 | Andrews Mcmeel Publishing, Inc. | Electronic calendar |
US8605090B2 (en) | 2006-06-01 | 2013-12-10 | Microsoft Corporation | Modifying and formatting a chart using pictorially provided chart elements |
US9727989B2 (en) | 2006-06-01 | 2017-08-08 | Microsoft Technology Licensing, Llc | Modifying and formatting a chart using pictorially provided chart elements |
US20080022263A1 (en) * | 2006-07-24 | 2008-01-24 | Bak Nathan V | Identifying The Origin Of Application Resources |
US20080033957A1 (en) * | 2006-08-04 | 2008-02-07 | Scott Forstall | Electronic calendar events drop box |
US8630885B2 (en) * | 2006-08-08 | 2014-01-14 | Skadool, Inc. | System and method for providing temporary and limited grants of calendar access |
US20080065740A1 (en) * | 2006-09-08 | 2008-03-13 | Andrew Baio | Republishing group event data |
US8290980B2 (en) * | 2006-09-08 | 2012-10-16 | Yahoo! Inc. | Generating event data display code |
US7870194B2 (en) | 2006-11-14 | 2011-01-11 | Microsoft Corporation | Sharing calendar information |
US8578301B2 (en) * | 2006-11-22 | 2013-11-05 | Skadool, Inc. | Hierarchical events |
US20080134344A1 (en) * | 2006-12-01 | 2008-06-05 | Mcbrearty Gerald Francis | Restricting access to calendar entries |
WO2008113153A1 (en) * | 2007-03-20 | 2008-09-25 | Tungle Corporation | Method and apparatus for sharing calendar information |
EP1972994A1 (en) * | 2007-03-20 | 2008-09-24 | Seiko Epson Corporation | Projector |
US8693494B2 (en) | 2007-06-01 | 2014-04-08 | Seven Networks, Inc. | Polling |
US8805425B2 (en) | 2007-06-01 | 2014-08-12 | Seven Networks, Inc. | Integrated messaging |
US10956874B2 (en) * | 2007-06-21 | 2021-03-23 | Microsoft Technology Licensing, Llc | Multimedia calendar |
US20090006161A1 (en) * | 2007-06-27 | 2009-01-01 | Yen-Fu Chen | Systems and methods for managing events of event scheduling applications |
US8201103B2 (en) | 2007-06-29 | 2012-06-12 | Microsoft Corporation | Accessing an out-space user interface for a document editor program |
US20090003138A1 (en) * | 2007-06-29 | 2009-01-01 | Caterpillar Inc. | Calendar interface scheduling tool for a data acquisition system |
US8484578B2 (en) | 2007-06-29 | 2013-07-09 | Microsoft Corporation | Communication between a document editor in-space user interface and a document editor out-space user interface |
US8762880B2 (en) | 2007-06-29 | 2014-06-24 | Microsoft Corporation | Exposing non-authoring features through document status information in an out-space user interface |
US8280984B2 (en) * | 2007-07-10 | 2012-10-02 | International Business Machines Corporation | Adding syndication feeds to calendar data exchange enabled programs |
US20090040875A1 (en) * | 2007-08-09 | 2009-02-12 | T-Mobile Usa, Inc. | Method and system for synchronization and display of a plurality of calendars on a device |
US8200520B2 (en) * | 2007-10-03 | 2012-06-12 | International Business Machines Corporation | Methods, systems, and apparatuses for automated confirmations of meetings |
US20090100329A1 (en) * | 2007-10-04 | 2009-04-16 | Danny Javier Espinoza | Method of Deploying a Web Widget In a Desktop Widget Platform |
US20090100018A1 (en) * | 2007-10-12 | 2009-04-16 | Jonathan Roberts | System and method for capturing, integrating, discovering, and using geo-temporal data |
US9785916B2 (en) * | 2007-10-12 | 2017-10-10 | Yahoo Holdings, Inc. | Integrating rich media into a web-based calendar |
US8364181B2 (en) | 2007-12-10 | 2013-01-29 | Seven Networks, Inc. | Electronic-mail filtering for mobile devices |
US9002828B2 (en) | 2007-12-13 | 2015-04-07 | Seven Networks, Inc. | Predictive content delivery |
US20090158035A1 (en) * | 2007-12-13 | 2009-06-18 | Stultz John G | Public Key Encryption For Web Browsers |
US8793305B2 (en) | 2007-12-13 | 2014-07-29 | Seven Networks, Inc. | Content delivery to a mobile device from a content service |
US8107921B2 (en) | 2008-01-11 | 2012-01-31 | Seven Networks, Inc. | Mobile virtual network operator |
US8862657B2 (en) | 2008-01-25 | 2014-10-14 | Seven Networks, Inc. | Policy based content service |
US20090193338A1 (en) | 2008-01-28 | 2009-07-30 | Trevor Fiatal | Reducing network and battery consumption during content delivery and playback |
US9588781B2 (en) * | 2008-03-31 | 2017-03-07 | Microsoft Technology Licensing, Llc | Associating command surfaces with multiple active components |
US20090255153A1 (en) * | 2008-04-15 | 2009-10-15 | Microsoft Corporation | Group calendar interface |
US20090272773A1 (en) * | 2008-05-01 | 2009-11-05 | Jose Andrade | Multi-Function Backpack-Vest Device |
US8787947B2 (en) | 2008-06-18 | 2014-07-22 | Seven Networks, Inc. | Application discovery on mobile devices |
US9665850B2 (en) | 2008-06-20 | 2017-05-30 | Microsoft Technology Licensing, Llc | Synchronized conversation-centric message list and message reading pane |
US8402096B2 (en) * | 2008-06-24 | 2013-03-19 | Microsoft Corporation | Automatic conversation techniques |
US8078158B2 (en) | 2008-06-26 | 2011-12-13 | Seven Networks, Inc. | Provisioning applications for a mobile device |
US9396281B2 (en) * | 2008-08-13 | 2016-07-19 | Microsoft Technology Licensing, Llc | Activities operating on structured data |
US8909759B2 (en) | 2008-10-10 | 2014-12-09 | Seven Networks, Inc. | Bandwidth measurement |
US8799353B2 (en) * | 2009-03-30 | 2014-08-05 | Josef Larsson | Scope-based extensibility for control surfaces |
US9046983B2 (en) | 2009-05-12 | 2015-06-02 | Microsoft Technology Licensing, Llc | Hierarchically-organized control galleries |
US8819701B2 (en) * | 2009-12-12 | 2014-08-26 | Microsoft Corporation | Cloud computing monitoring and management system |
US20110179358A1 (en) * | 2010-01-19 | 2011-07-21 | Rajesh Gautam | System For Managing A Plurality of Appointments, Events, and Reminders |
JP5423444B2 (en) * | 2010-02-04 | 2014-02-19 | 株式会社リコー | Network system, server device, and groupware program |
US9043731B2 (en) | 2010-03-30 | 2015-05-26 | Seven Networks, Inc. | 3D mobile user interface with configurable workspace management |
CN101833447B (en) * | 2010-04-08 | 2012-12-26 | 广东欧珀移动通信有限公司 | Method for realizing desktop Widget animation by using tweening animation |
US20110270643A1 (en) | 2010-05-02 | 2011-11-03 | Dana Reichman | System and method for online marketing, scheduling and booking of services |
US8484064B2 (en) | 2010-05-02 | 2013-07-09 | Lifebooker, Llc | System and method for financing promotional services |
US8302014B2 (en) | 2010-06-11 | 2012-10-30 | Microsoft Corporation | Merging modifications to user interface components while preserving user customizations |
WO2011160139A1 (en) | 2010-06-18 | 2011-12-22 | Sweetlabs, Inc. | Systems and methods for integration of an application runtime environment into a user computing environment |
CN101883148B (en) * | 2010-06-24 | 2012-12-26 | 华为终端有限公司 | Method and device for adding schedule |
US9043433B2 (en) | 2010-07-26 | 2015-05-26 | Seven Networks, Inc. | Mobile network traffic coordination across multiple applications |
US9077630B2 (en) | 2010-07-26 | 2015-07-07 | Seven Networks, Inc. | Distributed implementation of dynamic wireless traffic policy |
JP5676762B2 (en) | 2010-07-26 | 2015-02-25 | セブン ネットワークス インコーポレイテッド | Mobile application traffic optimization |
US8838783B2 (en) | 2010-07-26 | 2014-09-16 | Seven Networks, Inc. | Distributed caching for resource and mobile network traffic management |
JP5541998B2 (en) * | 2010-07-28 | 2014-07-09 | 株式会社ソニー・コンピュータエンタテインメント | Information processing device |
WO2012060996A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Caching adapted for mobile application behavior and network conditions |
WO2012060995A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
US9060032B2 (en) | 2010-11-01 | 2015-06-16 | Seven Networks, Inc. | Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic |
US8843153B2 (en) | 2010-11-01 | 2014-09-23 | Seven Networks, Inc. | Mobile traffic categorization and policy for network use optimization while preserving user experience |
US9330196B2 (en) | 2010-11-01 | 2016-05-03 | Seven Networks, Llc | Wireless traffic management system cache optimization using http headers |
WO2012061430A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Distributed management of keep-alive message signaling for mobile network resource conservation and optimization |
US8204953B2 (en) | 2010-11-01 | 2012-06-19 | Seven Networks, Inc. | Distributed system for cache defeat detection and caching of content addressed by identifiers intended to defeat cache |
US8484314B2 (en) | 2010-11-01 | 2013-07-09 | Seven Networks, Inc. | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
US8166164B1 (en) | 2010-11-01 | 2012-04-24 | Seven Networks, Inc. | Application and network-based long poll request detection and cacheability assessment therefor |
EP2636268B1 (en) | 2010-11-22 | 2019-02-27 | Seven Networks, LLC | Optimization of resource polling intervals to satisfy mobile device requests |
CN103404193B (en) | 2010-11-22 | 2018-06-05 | 七网络有限责任公司 | The connection that adjustment data transmission is established with the transmission being optimized for through wireless network |
EP2661697B1 (en) | 2011-01-07 | 2018-11-21 | Seven Networks, LLC | System and method for reduction of mobile network traffic used for domain name system (dns) queries |
US9084105B2 (en) | 2011-04-19 | 2015-07-14 | Seven Networks, Inc. | Device resources sharing for network resource conservation |
EP2702500B1 (en) | 2011-04-27 | 2017-07-19 | Seven Networks, LLC | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system |
EP2621144B1 (en) | 2011-04-27 | 2014-06-25 | Seven Networks, Inc. | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
US9239800B2 (en) | 2011-07-27 | 2016-01-19 | Seven Networks, Llc | Automatic generation and distribution of policy information regarding malicious mobile traffic in a wireless network |
US10373121B2 (en) | 2011-09-13 | 2019-08-06 | International Business Machines Corporation | Integrating a calendaring system with a mashup page containing widgets to provide information regarding the calendared event |
WO2013086214A1 (en) | 2011-12-06 | 2013-06-13 | Seven Networks, Inc. | A system of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation |
US8918503B2 (en) | 2011-12-06 | 2014-12-23 | Seven Networks, Inc. | Optimization of mobile traffic directed to private networks and operator configurability thereof |
WO2013086447A1 (en) | 2011-12-07 | 2013-06-13 | Seven Networks, Inc. | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
EP2788889A4 (en) | 2011-12-07 | 2015-08-12 | Seven Networks Inc | Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation |
WO2013090212A1 (en) | 2011-12-14 | 2013-06-20 | Seven Networks, Inc. | Mobile network reporting and usage analytics system and method using aggregation of data in a distributed traffic optimization system |
WO2013090834A1 (en) | 2011-12-14 | 2013-06-20 | Seven Networks, Inc. | Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic |
US8861354B2 (en) | 2011-12-14 | 2014-10-14 | Seven Networks, Inc. | Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization |
EP2801236A4 (en) | 2012-01-05 | 2015-10-21 | Seven Networks Inc | Detection and management of user interactions with foreground applications on a mobile device in distributed caching |
US9203864B2 (en) | 2012-02-02 | 2015-12-01 | Seven Networks, Llc | Dynamic categorization of applications for network access in a mobile network |
WO2013116852A1 (en) | 2012-02-03 | 2013-08-08 | Seven Networks, Inc. | User as an end point for profiling and optimizing the delivery of content and data in a wireless network |
US8812695B2 (en) | 2012-04-09 | 2014-08-19 | Seven Networks, Inc. | Method and system for management of a virtual network connection without heartbeat messages |
WO2013155208A1 (en) | 2012-04-10 | 2013-10-17 | Seven Networks, Inc. | Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network |
WO2014000130A1 (en) * | 2012-06-29 | 2014-01-03 | Yahoo! Inc. | Method or system for automated extraction of hyper-local events from one or more web pages |
WO2014011216A1 (en) | 2012-07-13 | 2014-01-16 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
US8775917B2 (en) | 2012-08-09 | 2014-07-08 | Sweetlabs, Inc. | Systems and methods for alert management |
US8775925B2 (en) | 2012-08-28 | 2014-07-08 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US9384472B2 (en) * | 2012-09-07 | 2016-07-05 | Time.ly Network Inc. | Methods and systems for a web-based calendar application |
US9069735B2 (en) * | 2012-10-15 | 2015-06-30 | Sweetlabs, Inc. | Systems and methods for integrated application platforms |
US9161258B2 (en) | 2012-10-24 | 2015-10-13 | Seven Networks, Llc | Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion |
US9307493B2 (en) | 2012-12-20 | 2016-04-05 | Seven Networks, Llc | Systems and methods for application management of mobile device radio state promotion and demotion |
US9241314B2 (en) | 2013-01-23 | 2016-01-19 | Seven Networks, Llc | Mobile device with application or context aware fast dormancy |
US8874761B2 (en) | 2013-01-25 | 2014-10-28 | Seven Networks, Inc. | Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
US9326185B2 (en) | 2013-03-11 | 2016-04-26 | Seven Networks, Llc | Mobile network congestion recognition for optimization of mobile traffic |
US9065765B2 (en) | 2013-07-22 | 2015-06-23 | Seven Networks, Inc. | Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network |
CN105874481A (en) * | 2013-09-30 | 2016-08-17 | 创新时代解决方案公司 | Method and system for scheduling of time-restricted shared assets |
US9749440B2 (en) | 2013-12-31 | 2017-08-29 | Sweetlabs, Inc. | Systems and methods for hosted application marketplaces |
KR20150110330A (en) * | 2014-03-21 | 2015-10-02 | 삼성전자주식회사 | Method for collection multimedia information and device thereof |
US10089098B2 (en) | 2014-05-15 | 2018-10-02 | Sweetlabs, Inc. | Systems and methods for application installation platforms |
US10019247B2 (en) | 2014-05-15 | 2018-07-10 | Sweetlabs, Inc. | Systems and methods for application installation platforms |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4591840A (en) * | 1983-11-04 | 1986-05-27 | International Business Machines Corp. | Calendar event description abbreviation |
US5023851A (en) | 1988-04-06 | 1991-06-11 | Ibm Corp. | Method for presenting electronic calendar information in an interactive information handling system |
JPH01288894A (en) * | 1988-05-16 | 1989-11-21 | Sharp Corp | Calendar display device with graphic symbol |
US5307086A (en) * | 1991-10-08 | 1994-04-26 | International Business Machines Corporation | Method of implementing a preview window in an object oriented programming system |
CA2071309C (en) * | 1991-11-15 | 1998-01-20 | Daryl J. Kahl | Method and apparatus utilizing data icons |
US5323314A (en) * | 1991-12-31 | 1994-06-21 | International Business Machines Corporation | Method and system for graphic representation of meeting parameters in a data processing system |
US5592602A (en) * | 1994-05-17 | 1997-01-07 | Macromedia, Inc. | User interface and method for controlling and displaying multimedia motion, visual, and sound effects of an object on a display |
US5530852A (en) * | 1994-12-20 | 1996-06-25 | Sun Microsystems, Inc. | Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics |
US5572643A (en) * | 1995-10-19 | 1996-11-05 | Judson; David H. | Web browser with dynamic display of information objects during linking |
US5706502A (en) * | 1996-03-25 | 1998-01-06 | Sun Microsystems, Inc. | Internet-enabled portfolio manager system and method |
US5867822A (en) * | 1996-06-26 | 1999-02-02 | Sun Microsystems, Inc. | Method and apparatus for management of electronic calendars throughout an enterprise and management of events in a distributed system |
US5802530A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Web document based graphical user interface |
US6018343A (en) | 1996-09-27 | 2000-01-25 | Timecruiser Computing Corp. | Web calendar architecture and uses thereof |
US5790790A (en) * | 1996-10-24 | 1998-08-04 | Tumbleweed Software Corporation | Electronic document delivery system in which notification of said electronic document is sent to a recipient thereof |
US5812529A (en) * | 1996-11-12 | 1998-09-22 | Lanquest Group | Method and apparatus for network assessment |
US6064977A (en) * | 1998-06-19 | 2000-05-16 | International Business Machine Corporation | Web server with integrated scheduling and calendaring |
-
1996
- 1996-09-27 US US08/721,446 patent/US6018343A/en not_active Expired - Lifetime
-
1997
- 1997-09-26 CA CA002266635A patent/CA2266635A1/en not_active Abandoned
- 1997-09-26 WO PCT/US1997/017389 patent/WO1998013753A1/en not_active Application Discontinuation
- 1997-09-26 AU AU46547/97A patent/AU745833B2/en not_active Ceased
- 1997-09-26 EP EP97945318A patent/EP1008031A4/en not_active Withdrawn
- 1997-09-26 US US09/269,431 patent/US6380959B1/en not_active Expired - Lifetime
- 1997-09-26 JP JP10515973A patent/JP2001502083A/en active Pending
-
1999
- 1999-10-12 US US09/416,086 patent/US6278456B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
AU745833B2 (en) | 2002-04-11 |
EP1008031A4 (en) | 2001-08-08 |
EP1008031A1 (en) | 2000-06-14 |
WO1998013753A1 (en) | 1998-04-02 |
US6380959B1 (en) | 2002-04-30 |
US6278456B1 (en) | 2001-08-21 |
JP2001502083A (en) | 2001-02-13 |
AU4654797A (en) | 1998-04-17 |
US6018343A (en) | 2000-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6380959B1 (en) | Web calendar architecture and uses thereof | |
US11375345B2 (en) | Message extension app store | |
Greenberg et al. | Groupware toolkits for synchronous work | |
EP3255909B1 (en) | Messaging application interacting with one or more extension applications | |
US6396512B1 (en) | Information sharing system for personal electronic time management systems | |
US6507351B1 (en) | System for managing personal and group networked information | |
US6717589B1 (en) | Computerized help system with modal and non-modal modes | |
Prakash et al. | DistView: Support for building efficient collaborative applications using replicated objects | |
US7089278B1 (en) | Anchored conversations: adhesive, in-context, virtual discussion forums | |
US6571281B1 (en) | Information sharing system for personal electronic time management systems | |
KR100320973B1 (en) | Personal conferncing system | |
US5737560A (en) | Graphical method and system for accessing information on a communications network | |
US6636889B1 (en) | System and method for client replication of collaboration space | |
US20060005163A1 (en) | Reusable component in a collaboration workspace | |
US20040174392A1 (en) | Collaboration launchpad | |
US20030217105A1 (en) | Method and apparatus for connecting a secure peer-to-peer collaboration system to an external system | |
WO2005101946A2 (en) | A system for management of interactions between users and software applications in a web environment | |
US20070282657A1 (en) | Method and system for providing activity-centric awareness in a virtual collaboration space with personalized differential awareness user interface representations | |
US20160014221A1 (en) | Method and apparatus for a distributable globe graphical object | |
Tietze | A framework for developing component based cooperative applications | |
JP2008197765A (en) | Generation method for electronic tag | |
Werle et al. | A ubiquitous service environment with active documents for teamwork support | |
Faraj et al. | Distributed object environment: using international standards for data exchange in the construction industry | |
Grundy et al. | Building multi-device, component-based, thin-client groupware: issues and experiences | |
Girgensohn et al. | Experiences in developing collaborative applications using the World Wide Web “shell” |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
FZDE | Discontinued | ||
FZDE | Discontinued |
Effective date: 20050926 |