Hierarchical structure editor for web sites
Abstract
A method and apparatus for a structure editor implementing a "top-down" approach to designing a Web page. The user uses a "drag and drop" interface to add, delete, and move display elements to define the hierarchy of the site and to define the layout of each page in the site. The present invention automatically generates a layout for each page. This layout contains display elements that represent the links between pages of the site. The present invention automatically adds, removes, and deletes the appropriate links between the pages of the site as the user moves display elements. After the user has defined the hierarchy of the site and the layout of each page in the site, the user "publishes" the site. The publish function automatically generates HTML for each page of the site in accordance with the display elements of each page, yielding true WYSIWYG pages for the site.

Term
No projected expiry on record.
- Priority and filed
- Published
- Today
23 claims: 6 independent, 17 dependent
- 1WHAT IS CLAIMED IS:1. A method of allowing a user to define a World Wide Web site having a plurality of pages with a hierarchical organization comprising the steps, performed by a data processing system, of: receiving an indication that the user wants to add a new page at a position in the site hierarchy;adding a page data structure for the new page to a tree of other page data structures reflecting the site hierarchy, where the page data structure is added in accordance with the position of the new page in the site hierarchy;and automatically creating in the memory a layout data structure for the new page, the layout data structure having a hyperlink in accordance with the position of the new page in the site hierarchy.
- 13A method of allowing a user to define a World Wide Web site having a plurality of pages with a hierarchical organization comprising the steps, performed by a data processing system of:displaying a plurality of page icons in a hierarchical fashion, on a display device where the hierarchy of the page icons reflects the hierarchal organization of the pages;receiving an indication that the user has dragged one of the page icons in the site hierarchy from an old position to a new position;displaying, in accordance with the new position, an indicator on a second page icon indicating where the new page icon would be added in the site hierarchy;receiving an indication that the user wants to move the new page to the new position;removing the page icon from the old position on the display device;displaying the page icon in proximity to the indicator;and moving a page object, corresponding to the moved page icon, within a tree structure in accordance with the new position of the moved page icon.
- 17A method of allowing a user to define a World Wide Web site having a plurality of pages with a hierarchical organization comprising the steps, performed by a data processing system, of:5 displaying a plurality of page icons on a display device in a hierarchical fashion, where the hierarchy of the page icons reflects the hierarchal organization of the pages;receiving an indication that the user has selected page icon;receiving an indication that the user may want to add a new page as a l o child of the selected page icon;displaying a page icon corresponding to the new page as a child of the selected page icon;and adding a page object, corresponding to the new page, to a tree structure, where the new page object is a child of a page object corresponding to the selected page 15 icon.
- 21A computer program product, comprising:a computer usable medium having computer readable code embodied therein for allowing a user to define a World Wide Web site having a plurality of pages 25 with a hierarchical organization, the computer program product comprising: computer readable program code devices configured to cause a computer to effect receiving an indication that the user wants to add a new page at a position in the site hierarchy;computer readable program code devices configured to cause a computer to effect adding a page data structure for the new page to a tree of other page data structures reflecting the site hierarchy, where the page data structure is added in accordance with the position of the new page in the site hierarchy;and computer readable program code devices configured to cause a computer to effect automatically creating in the memory a layout data structure for the new page, the layout data structure having a hyperlink in accordance with the position of the new page in the site hierarchy.
- 22A computer program product, comprising:a computer usable medium having computer readable code embodied therein for allowing a user to define a World Wide Web site having a plurality of pages with a hierarchical organization, the computer program product comprising: computer readable program code devices configured to cause a computer to effect displaying a plurality of page icons in a hierarchical fashion on a display device, where the hierarchy of the page icons reflects the hierarchal organization of the pages;computer readable program code devices configured to cause a computer to effect receiving an indication that the user has dragged one of the page icons in the site hierarchy from an old position to a new position;computer readable program code devices configured to cause a computer to effect displaying, in accordance with the new position, an indicator on a second page icon indicating where the new page icon would be added in the site hierarchy;computer readable program code devices configured to cause a computer to effect receiving an indication that the user wants to move the new page to the new position;computer readable program code devices configured to cause a computer to effect removing the page icon from the old position on the display device;computer readable program code devices configured to cause a computer to effect displaying the page icon in proximity to the indicator;and computer readable program code devices configured to cause a computer to effect moving a page object, corresponding to the moved page icon, within a tree structure in accordance with the new position of the moved page icon.
- 23A method of adding a new page at a predetermined hierarchical position in a multipage hierarchy in a World Wide Web site, comprising the steps, performed by a data processing system, of:adding a new page data structure for the new page to a tree of page data structures of the existing pages in the multipage hierarchy, the position of the new page data structure in the tree being determined from the position of the new page in the multipage hierarchy;and creating a layout data structure for the new page having a link to another page defined by the position of the new page in the multipage hierarchy.
Independent claims6
615 paragraphs in 5 sections, as filed
HIERARCHICAL STRUCTURE EDITOR FOR WEB SITES
FIELD OF THE INVENTION
0003This application relates to the World Wide Web and, in particular, to a method and apparatus for managing elements of a World Wide Web site having multiple pages.
BACKGROUND OF THE INVENTION
0005The past several years have seen an explosive growth of the World Wide Web ("the Web"). The Web is built around a network of "server" computers, which exchange requests and data with each other using the hypertext transfer protocol ("http"). A human designer designs the layout of a
0006Web page, which is then specified using HTML ("Hypertext Markup Language") . Several versions of HTML are currently in existence. Examples include HTML versions 2.0 and 3.0, as specified by the WWW Consortium of
0007MIT. Netscape Communications Corp. has specified additional HTML features
0008that extend the HTML language, including forms and tables.
0009A user views a Web page using one of a number of commercially available "browser" programs. The browser submits an appropriate http request to establish a communications link with a Web server of the network.
0010A typical http request references a Web page by its unique Uniform Resource Locator ("URL"). A URL identifies the Web server hosting that Web page, so that an http request for access to the Web page can be routed to the
0011appropriate Web server for handling. Web pages can also be linked graphically to each other. The HTML to describe a Web page is often created by hand by a human
0012being. If the design of the page changes, the corresponding HTML must be rewritten, which is an exacting process. Although several conventional HTML editors exist, these editors only allow the user to specify certain elements of a
0013page and still require the user to enter HTML code. Conventional HTML editors
0014allow the user to specify the page content and general layout, but do not provide the user with "What You See Is What You Get" (WYSIWYG) capability. Thus, the pages generated by conventional HTML editors look different when
0015viewed by different browsers.
0016A Web "site" consists of a "homepage" and several other related pages. Each page has corresponding HTML that describes the appearance and function of the page. For example, the HTML for the homepage usually contains links to one or more of the other pages and the other pages often contain respective links back to the homepage. When the user clicks on a link of the displayed homepage, the browser requests and displays the linked-to
0017page. Each link must be designed and coded into the HTML for the page.
0018Thus, for example, when a human designer decides to remove a link between the homepage and another page, the HTML for the homepage must be changed to reflect the removed link. This process is exacting and requires that the user
0019manually change the link. Moreover, if the linked-to page has another link back
0020to the homepage, that link may also need to be changed.
0021It is usually desirable to have a consistent style for all pages of a site. When the user hand codes the HTML for each page of a site, it is difficult for
0022the user to remember to use a consistent style. In addition, if the user decides to change the style of a site, each page must be changed individually.
SUMMARY OF THE INVENTION
0024The present invention overcomes the problems and disadvantages of
0025the prior art by using a "top-down" approach to designing a Web page. The user can use a "drag and drop" interface to move icons representing Web pages into a desired hierarchy of pages for the site. The hierarchy can, but does not necessarily represent links between the pages of the site.
0026The user drags and drops display elements to define the hierarchy of the site and to define the layout of each page in the site. The present invention automatically generates a layout for each page. This layout contains display
0027elements that represent the links between pages of the site. Thus, the user
0028does not have to manually specify links for each page. As the user drags and drops icons to add, move, and delete pages of the site hierarchy, the present invention will automatically add, remove, and delete the appropriate links
0029between the pages of the site. A preferred embodiment also automatically
0030creates a banner across the top of each page that contains a user-specified page name.
0031After the user has defined the hierarchy of the site and the layout of
0032each page in the site, the user "publishes" the site. The publish function
0033automatically generates HTML for each page of the site in accordance with the display elements of each page. In the described embodiment of the present invention, the publish function generates an HTML table for each page. The
0034number of cells in each table reflects the number and placement of display
0035elements on a corresponding page, yielding a true WYSIWYG page for the site. In accordance with the purpose of the invention, as embodied and
0036broadly described herein the invention is a method of allowing a user to define a World Wide Web site having a plurality of pages with a hierarchical organization comprising the steps, performed by a data processing system, of:
0037receiving an indication that the user wants to add a new page at a position in
0038the site hierarchy; adding a page data structure for the new page to a tree of other page data structures reflecting the site hierarchy, where the page data structure is added in accordance with the position of the new page in the site
0039hierarchy; and automatically creating in the memory a layout data structure for
0040the new page, the layout data structure having a link in accordance with the position of the new page in the site hierarchy.
0041In further accordance with the purpose of this invention, as embodied
0042and broadly described herein the invention is a method of allowing a user to
0043define a World Wide Web site having a plurality of pages with a hierarchical organization comprising the steps, performed by a data processing system of:
0044displaying a plurality of page icons in a hierarchical fashion, on a display device
0045where the hierarchy of the page icons reflects the hierarchal organization of the pages; receiving an indication that the user has dragged one of the page icons in the site hierarchy from an old position to a new position; displaying, in accordance with the new position, an indicator on a second page icon
0046indicating where the new page icon would be added in the site hierarchy;
0047receiving an indication that the user wants to move the new page to the new
0048position; removing the page icon from the old position on the display device;
0049displaying the page icon in proximity to the indicator; and moving a page object, corresponding to the moved page icon, within a tree structure in accordance with the new position of the moved page icon.
0050Advantages of the invention will be set forth in part in the description
0051which follows and in part will be obvious from the description or may be learned by practice of the invention. The advantages of the invention will be
0052realized and attained by means of the elements and combinations particularly
0053pointed out in the appended claims and equivalents.
BRIEF DESCRIPTION OF THE DRAWINGS
0055The accompanying drawings, which are incorporated in and constitute
0056a part of this specification, illustrate several embodiments of the invention and, together with the description, serve to explain the principles of the invention.
0057Fig. 1 is a block diagram of a computer system in accordance with a preferred embodiment of the present invention.
0058Fig. 2 is a block diagram showing input and output to structure editor
0059software of Fig. 1 .
0060Fig. 3 shows a first display on a display device generated in accordance with the embodiment of Fig. 1 , where the display shows all pages of a Web
0061site.
0062Fig. 4 shows a second display on a display device generated in accordance with the embodiment of Fig. 1 , where the site has multiple pages added and one page has been moved from its original position.
0063Fig. 5(a) show an example of an internal representation of page objects corresponding to the pages of Fig. 3 before the page is moved. Fig. 5(b) show an example of an internal representation of objects corresponding to the page objects of Fig. 4 after the page is moved.
0064Fig. 6 shows an alternate display for the objects of Fig. 5(b).
0065Fig. 7 shows a format of a page object corresponding to a page in the
0066site.
0067Fig. 8 is a flow chart showing initialization steps performed by the structure editor software.
0068Fig. 9 is a flow chart showing steps performed by the structure editor
0069software to create a new page in the site.
0070Fig. 1 0 is a flow chart showing steps performed by the structure editor software when the user selects a node.
0071Fig. 1 1 is a flow chart showing steps performed by the structure editor software when the user moves a node.
0072Fig. 1 2 is a flow chart showing steps performed by the structure editor software when the user changes the profile of a page.
0073Fig. 1 3 is a flow chart showing steps performed by the structure editor
0074software when the user changes a property of the site.
0075Fig. 1 4(a) is a flow chart showing steps performed by the structure editor software when the user changes a view of the site.
0076Fig. 1 4(b) shows an example of a View tab.
0077Fig. 1 5(a) is a flow chart showing steps performed by the is a flow chart showing steps performed by the structure editor software when the user changes a view of the site.
0078Fig. 1 5(b) shows a collapsed node. Fig. 1 6 is a flow chart showing steps performed by the structure editor
0079software when the user expands a branch on the display.
0080Fig. 1 7 shows an example of adding a child page to the site.
0081Fig. 1 8 shows an example of adding a sibling page to the site.
0082Fig. 1 9 shows an example of a stacked data page in the site view. Fig. 20 shows an example of a horizontal display of pages of a site.
0083Fig. 21 shows an example of a vertical display of pages of a site.
0084Fig. 22 shows an example of an initial page layout before the user has
0085edited it.
0086Fig. 23 is a flow chart showing steps performed by the structure editor
0087software to display the page layout of Fig. 22.
0088Fig. 24 is an example showing an internal representation stored in a
0089memory of objects automatically generated on the page by the structure editor. Fig. 25 is an example of a draw object for a page banner.
0090Figs. 26(a) and 26(b) are examples of a draw object for a navigator
0091button.
0092Fig. 27 is an example of a draw object for a text navigator button. Fig. 28 shows an example of a display used to allow the user to publish
0093the pages of a site.
0094Fig. 29 shows an example of a display used to allow the user to specify
0095details of how to publish a site.
0096Fig. 30 is a flow chart showing steps performed by the structure editor software to publish all the pages of a site.
0097Fig. 31 is a flow chart showing steps performed by the structure editor software to publish a single page.
0098Fig. 32 is a flow chart showing steps performed by the structure editor
0099software to publish a stacked page.
0100Fig. 33 is a flow chart showing steps performed by the structure editor software to generate initial HTML for a page.
0101Fig. 34 is a flow chart showing further steps performed by the
0102structure editor software to generate an HTML table for layout elements of a page, such as a header, body, and footer.
0103Fig. 35 is a flow chart showing steps performed by the structure editor
0104software to generate an HTML table.
0105Fig. 36 is an example of steps performed by the structure editor to generate final HTML for a site.
0106Fig. 37 is an example of first steps involved in determining an HTML
0107table size.
0108Fig. 38 is an example of second steps involved in determining an HTML table size.
0109Fig. 39 is an example of a matrix generated by the steps of Figs. 37
0110and 38.
0111Fig. 40 is a block diagram of how the matrix of Fig. 39 is used to generate an HTML table, which a browser uses to display a portion of a page.
0112Fig. 41 shows an example of a Style display.
0113Fig. 42 shows an example of an Assets Display.
0114Fig. 43 shows an example of a plurality of link dialog boxes, showing a structural link, an internal link, and an external link. Fig. 44 is a flow chart showing identification of structural links for a page. DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
0115Reference will now be made in detail to a preferred embodiment of the invention, an example of which is illustrated in the accompanying drawings.
0116Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
0117I. System Overview
0118Fig. 1 is a block diagram of a computer system 1 00 in accordance with a preferred embodiment of the present invention. Computer system 100
0119includes a CPU 1 02; a memory 1 04; input/output lines 1 05; an input device
01201 50, such as a keyboard or mouse; and a display device 1 60, such as a display terminal. Computer 1 00 also includes an input device 1 61 , such as a floppy
0121disk drive or CD ROM reader, that reads computer instructions and data stored on computer readable medium 1 62, such as a floppy disk or a CD ROM. These
0122computer instructions are the instructions of e.g., structure editor software 1 20. Memory 104 includes structure editor software 1 20, page objects, layout objects, and draw objects 1 30, HTML 1 40, and image files 1 40, etc., as described in further detail below.
0123A person of ordinary skill in the art will understand that memory 104 also contains additional information, such as application programs, operating
0124systems, data, etc., which are not shown in the figure for the sake of clarity.
0125It also will be understood that computer system 100 can also include
0126numerous elements not shown in the Figure for the sake of clarity, such as disk drives, keyboards, display devices, network connections, additional memory,
0127additional CPUs, LANs, internet connections, input/output lines, etc.
0128II. Site Creation and Manipulation
0129The following paragraphs describe how the user creates a hierarchy of
0130pages for a site. It will be understood that all flow charts in this document represent steps performed by processor 1 02 executing instructions of structure
0131editor software 102.
0132Fig. 2 is a block diagram showing input and output to structure editor software 1 20 of Fig. 1 . Structure editor 1 20 includes a portion 202 that creates and manages a hierarchy of pages and a portion 204 that publishes the pages of the site. The user uses a drag and drop interface to define the
0133hierarchy of the site. Pages in the site can include new text and images or
0134preexisting text and images. The user initiates publish portion 204 by clicking on a "publish" button as described below. Publish portion 204 generates a
0135plurality of HTML pages, as described below. Each page includes one or more
0136HTML tables that yields a WYSIWYG Web page.
0137Fig. 3 shows a "site view" displayed on display device 1 60. In the described embodiment, the display of Fig. 3 is displayed by processor 102
0138upon beginning execution of structure editor software 1 20. The site view of
0139Fig. 3 is also displayed when the user selects Site button 302. Fig. 3 shows that the software automatically creates a node representing a "Home" page and displays an icon 350 corresponding to the home page node.
0140The display of Fig. 3 includes a plurality of buttons: a "Site" button 302, a "Page" button 304, a "Style" button 306, an "Assets" button 308, and
0141a "Publish" button 310. The display also includes a "Preview" button 31 2, a
0142"New Page" button 314, a "Goto" button 31 6, and a "Last" button 31 8. Each of buttons 302-31 4 are discussed below in turn. The Goto and Last buttons 31 6, 31 8 transfer control to a most recent display or a user-selected previous
0143display, in a manner known to persons of ordinary skill in the art. The
0144described embodiment keeps a "history" of execution of structure editor 1 20 in order to implement the Goto and Last buttons.
0145The display of Fig. 3 further includes a "Structure View" toggle 320
0146and an "Outline View" toggle 322. When the user clicks on Structure View
0147toggle 320, a display having a format of Figs. 3 and 4 are displayed. When the user clicks on Outline View toggle 322, a display having a format of Fig. 6 are displayed. The user can drag and drop page icons in either the Structure view
0148or the Outline view.
0149The display of Fig. 3 further includes a "Tools" window 324. Tools window 324 includes a "cursor" tool, and "zoom in" and "zoom out" tools, as
0150are known in the art. Depending on the implementation used, windows are
0151also called "dialog boxes."
0152The display of Fig. 3 further includes a "Properties" window 326. Properties window 326 includes three tabs: a "View" tab 328, a "Site" tab 330, and a "Page" tab 332. Properties window currently shows page
0153properties because page tab 332 is selected. Properties window 326 includes
0154a "Name" area 334, a "Page Type" area 336, a "Publish/Don't Publish" area 338, a "Color" area 340, a "Status" area 342, and a "Comments" area 344. The user can "select" a page icon, such as page icon 350, in a manner known to person of ordinary skill in the art. When a page icon is selected, the
0155values shown in Properties window 326 are values for the selected page.
0156Thus, in Fig. 3, when "Home" page icon 350 is selected, the name field in
0157Properties window 326 is "Home." The page type is "normal." ("Stacked pages" are discussed below). The user has indicated that the page should be published during the Publish function. (The user also can indicate that the page
0158should not be published during the publish function). The color of page icon
0159350 is the color indicated in Color area 340. (Note that this is different from the background color of the page itself.) The user has indicated that the status of the page is "not done." The user has not entered any comments about the page. It will be understood by persons of ordinary skill in the art that structure editor software 1 20 stores values corresponding to Properties window 326 and for each Properties window and Properties tab discussed herein in memory
0160104. Fig. 4 shows a second display on a display device generated in accordance with the embodiment of Fig. 1 , where the user has added multiple pages to the site and one page has been moved from its original position. In
0161Fig. 4, the user has added page icons 452-474 by selecting (e.g., clicking) on
0162New Page button 31 4 for each new page icon added. Each new page icon
0163represents a new page added to the site hierarchy. The site hierarchy uses a
0164"tree" structure. Each branch of the tree represents a "logical" (or "structural")
0165connection between two pages. As discussed below, these logical connections
0166may also represent links between the pages, but do not necessarily represent such links. Moreover, links between pages may exist that do not represent
0167branches of the site hierarchy.
0168Fig. 4 shows a display after the user has selected page icon "Files" 466 and dragged page icon 466 on top of page icon 474. The dotted line in Fig. 4
0169indicates the path of the dragged page icon, but is not displayed. In the
0170described embodiment, page icon 466 is highlighted when it is selected. When a page icon is dragged, it is represented by a dotted outline of a page icon (not shown). As shown in Fig. 4, when the user drags a first icon on top of a second icon, the first icon is displayed with an arrow indicating where the
0171second page icon will connect to the first page icon. Thus, in Fig. 4, if the user drops page icon 466 on top of page icon 474 (and slightly below icon 474), page icon 466 will be displayed as "child" of page icon 474 (and removed from its previous display location). Fig. 1 7 shows another example of moving a
0172page icon so that it becomes a child icon. Fig. 1 8 shows an example of moving a page icon so that it becomes a sibling page icon. If, in Fig. 4, page icon 466 was moved to the left side of icon 474 instead of to the bottom, an arrow would appear on the left side of icon 474, indicating where the page
0173icon 466 will connect to page icon 474 if it is dropped. Thus, in Fig. 4, if the user drops page icon 466 on top of page icon 474 (and slightly to the left, not shown), page icon 466 will be displayed as "sibling" of page icon 474 (and removed from its previous display location).
0174Fig. 5(a) show an example of an internal representation of page objects corresponding to the page icons of Fig. 4 before page icon 466 is moved. Page objects and page icons are also called "nodes." The page objects of Fig. 5(a) form a tree data structure in memory 1 04. Page object 502 is a child of a
0175"Private" page object 503, since page icon 466 is a child of "Private" page icon
0176454. In the tree of Fig. 5(a), each node has zero or one "first children." Other
0177children of the node are indicated as "next siblings" of the first child.
0178Fig. 5(b) show the internal representation of page objects corresponding
0179to the page icons of Fig. 4 after page icon 466 is moved. Page object 502,
0180which corresponds to page icon 466, is a child of page object "Poles" 504
0181since page icon 466 has been moved to be a child of "Poles" page icon 474.
0182Fig. 7 shows a format of a page object 700. Each page object of Figs. 5(a) and 5(b) has this format. Fig. 7 shows only the information in the object, not the size or type of the information. Page object 700 includes an object number, an object type, an object name (e.g., "Products"), a collection number (currently unused), a number of a parent node/page, a next sibling number, a first child number, a pointer to a list of draw objects in a current layout of the
0183page (discussed below), a flag indicating whether the page is a stacked page, a
0184flag indicating whether the page is currently expanded on the display, a flag indicating whether the page is currently collapsed on the display, a flag
0185indicating whether the page should be published when the site is published, a
0186color of the page icon for the page, a status (e.g., "done," "not done"), and
0187user-entered comments. Fig. 8 is a flow chart showing initialization steps performed by structure
0188editor software 1 20 upon execution. Step 802 opens the initial window of Fig.
01893. Step 804 sets default values for the site in memory 104. These default
0190values include a style of the layout, header, and footer, as discussed below. Step 806 creates and displays a page object for the homepage (root node) of
0191the site in memory 104. The created page object has a format shown in Fig. 7
0192and has no parent node. Step 808 stores default initial values in the root page
0193object.
0194In the described embodiment, the default name is "Home". The default class is node. The default parent number, sibling number, and first child
0195number is "0" . The default layout includes a banner having the default name
0196"Home". The stacked flag defaults to "false." The expanded flag and the publish flag default to "true." The color of the page icon defaults to a predetermined page icon color. Alternately, the each level of page icon
0197defaults to a different predetermined color. The status defaults to "not done".
0198The comments default to < null > .
0199Fig. 9 is a flow chart showing steps performed by structure editor software 1 20 to create a new page in the site. The steps of Fig. 9 are
0200performed when the user selects New Page button 314 of Fig. 3. If, in step 902, the user has previously selected a page icon (also called a "node"), then processor 102 displays a new child page icon of the selected page icon in step 904. Step 906 creates a page object in memory for the new page. If the
0201selected node already has an existing child (step 908) then, in step 910, the new node is made a next sibling of the existing child node. Otherwise, in step
020291 2, if the selected node has no children, then the new node is made a first child of the selected node. In the described embodiment, a new page is always
0203a normal page. Creation of stacked pages is discussed in the copending
0204application. In the described embodiment, whenever a new page is created, new
0205draw objects are automatically created for that page. These draw objects represent links in the page layout to other nodes in the site. Currently links are created in the header and the footer of the new page to the homepage, to the
0206parent node, and to the "first level nodes" (i.e., to children of the homepage).
0207Links can also be generated for (future) children of the new page. The described embodiment automatically creates "structural links. " A draw object is created for each link. A structural link represents a link to a node having a
0208certain place in the site hierarchy, not a link to an absolute page. Thus, a page can contain a structural link to a sibling page. The actual identity of the sibling page is not determined when the draw object for the link is created. The identity of the link is created when the page containing the link is displayed,
0209previewed or published. Fig. 43 shows an example of a plurality of dialog boxes for different types of links.
0210Fig. 1 0 is a flow chart showing steps performed by structure editor
0211software 1 20 when the user selects a page icon/node (step 1002). In step
02121 004, processor 102 displays the selected page icon in a predetermined color, or by drawing a line around the selected page icon, or by displaying some similar indication of selection. Processor 1 02 also sets a value in memory 104 indicating the current selected node.
0213Fig. 1 1 is a flow chart showing steps performed by structure editor
0214software 1 20 when the user moves a node. Note that, in the described embodiment, the page icon for the homepage cannot be moved. In step 1 104,
0215the page icon is displayed as dotted line while it is moving. In step 1 1 06, if the selected node is close to the side of another node then, in step 1 108, the node is highlighted and an arrow is displayed on the corresponding side of that node. In step 1 1 10, if the selected node is close to the bottom of another
0216node then, in step 1 1 1 2, the node is highlighted and an arrow is displayed on
0217the bottom of that node. In step 1 1 14, if the selected node has been dropped, if the dropped
0218node is not near another node (either side or bottom), then no action is taken.
0219The user cannot drop a node so that it is not a part of the site. If the selected node has been dropped near another node (either side or bottom) then, in steps
02201 1 20 through 1 1 24, the page icon/node is moved to a new position in the site
0221hierarchy. Step 1 1 20 removes the selected node (and all its children) from its
0222old display position. Step 1 1 22 adds the selected page icon/node (and all its children) to its new display position. Step 1 1 24 changes one or more page objects in memory so that the page is correctly linked into its new position in
0223the site hierarchy. In an alternate embodiment, in step 1 1 26, the draw objects of the selected page are altered so that when the selected page is displayed by a browser, the selected page contains links to its new parents, siblings, and/or
0224children. The user may, of course, alter these draw objects if he so desires. The draw objects of the new parents and siblings are also changed so that a link to the moved page will be created.
0225Fig. 1 2 is a flow chart showing steps performed by structure editor
0226software 1 20 when the user changes the profile of a page. The steps of Fig.
02271 2 are performed when the user selects "Profile" from a pull down-view menu to display Profile window 326 of Fig. 3. In the described embodiment, the
0228values in the profile window are the current values from the selected page icon/node. If the user enters a page name in step 1 206 then, in step 1 208, the name is stored in a corresponding page object having the format of Fig. 7. In
0229step 1 21 2, the new name is displayed in the page icon on the display. In an
0230alternate embodiment, the name is changed in any existing draw objects for the selected page (i.e., banners, etc.). Moreover, if other pages link to the selected page, then the name is also changed in any other draw objects of those pages.
0231If the page contains "smart links. " the identity of the linked-to page is not determined until the page is displayed, previewed, or published. If the user selects "publish" or "don't publish" in step 1 21 2 then, in step 1 214, the value of the publish flag is changed accordingly and, in step 1 21 6, a dot indicating "publish" is displayed in the page icon. If the user
0232changes the color of the selected page icon in step 1 21 8 then, in steps 1 220 and 1 222, the color value in the corresponding page object is changed accordingly and the page icon is displayed in its new color.
0233If the user selects "done" or "not done" in step 1 224 then, in step
02341226, the done flag in the corresponding page object is changed accordingly and a checkmark indicating "done" is displayed in the page icon. If the user
0235has entered comments in step 1 228 then, in step 1 230, the comments in the
0236corresponding page object are changed accordingly.
0237Fig. 1 3 is a flow chart showing steps performed by structure editor
0238software 1 20 when the user clicks on a Site tab of a site property window.
0239The user can change the style and name for the site and save the creation and edit dates.
0240Fig. 14(a) is a flow chart showing steps performed by structure editor software 1 20 when the user clicks on a View tab of a Site property window.
0241The user can set the view to be either horizontal or vertical. Fig. 14(b) shows
0242an example of a View Tab. Fig. 20 shows a horizontal view of the site hierarchy. Fig. 21 shows a vertical view of the site hierarchy.
0243Fig. 1 5(a) is a flow chart showing steps performed by structure editor
0244software 1 20 when the user collapses a branch on the display. The user collapses a branch by selecting a page icon and selecting "Collapse" from the pull-down view menu. All nodes below the selected node are removed from the display and the selected node is displayed in a predetermined format
0245indicating a collapsed branch. Fig. 1 5(b) shows an example of a collapsed node. When a node is collapsed, its collapsed flag is set to "true."
0246Fig. 1 6 is a flow chart showing steps performed by structure editor
0247software 1 20 when the user expands a branch on the display. The user
0248expands a branch by selecting a page icon and selecting "Expand" from the pull-down view menu. The nodes below the selected node in the site hierarchy are displayed and the Collapsed indicator is removed from the selected node. When a node is expanded, its expanded flag is set to "true."
0249Fig. 1 9 shows an example of adding stacked data pages to the site hierarchy. When a page is a stacked page, it is displayed as overlapping pages
02501 902. Stacked pages are moved at the site level of Figs. 3 and 4 in
0251substantially the same manner as normal pages, with the exception that a
0252stacked page causes multiple HTML pages to be generated. III. Page Creation and Manipulation for the Site
0253Fig. 22 shows an example of an initial page layout before the user has edited it. Fig. 22 is displayed after the user indicates that he wants to edit a
0254page by preferably: 1 ) double clicking on a page icon or 2) selecting a page
0255icon and selecting "Page" button 304 of Fig. 3. The display of Fig. 22 is generated by a "page editor". The described embodiment of the present invention automatically creates draw objects in memory for each page of the
0256site. The automatically created draw objects reflect links between pages of the
0257site, as described below. The display of Fig. 22 creates a page having three parts: a header
02582202, a body 2204, and a footer 2206. The page editor allows individual scrolling in each of these parts. The described embodiment of the present invention automatically creates display elements of header 2202 and footer 2206. Header 2202 automatically contains a banner 2210 and a plurality of navigator buttons 221 2. In the example, the banner contains the name of the
0259selected page icon 456 ("Products") of Fig. 4. Navigator buttons 221 2 include buttons for home page 250 ("Home button 221 4), the Welcome page 252 ("Welcome" button 221 6), and the "Private" page ("Private" button 221 6).
0260Navigator buttons 221 2 preferably include an image, such as the 3D button
0261image shown in Fig. 22. This image may be predefined or defined by the user through use of a pop-up window.
0262Thus, in Fig. 22, the navigator buttons 221 2 automatically include buttons corresponding to the home page, to the first hierarchical level below the homepage, and to the parent page. Alternate implementations of the present invention automatically display navigator buttons for one or more of the home page, the parent page, sibling pages, the first level, children pages, and any other appropriate pages. In some embodiments, the user chooses which
0263navigator buttons are generated automatically by way of a pop-up site window. Footer 2206 automatically contains a plurality of text buttons 2230.
0264These text buttons preferably correspond to the navigator buttons 221 2.
0265Thus, text buttons 2230 include buttons for home page 250 ("Home text
0266button 2230), the Welcome page 452 ("Welcome" text button 2232), and the "Private" page 454 ("Private" text button 2234). The internal memory representation of banner 221 0 and of buttons 221 2 and 2230 are discussed in
0267detail below.
0268Fig. 22 also shows a "Properties" window 2250 in which a "View" tab is selected. Properties window 2250 includes three tabs: a "View" tab 2252, a "Page" tab 2254, and a "Layout" tab 2256. Properties window 2250
0269currently shows view properties because View tab 2252 is selected.
0270Properties window 2250 includes a "Measurement Unit" area 2260, a "Element border" area 2262, "Grid Width" and "Grid Height" areas" 2264, 2266, a "Show Grid" flag 2265, font size areas 2268, 2272, a "Color" area
02712272, a "Horizontal Splitter" flag area 2270, and a "Snap to Grid" flag area
02722276.
0273When the page editor is started, the values of Properties window 326 are properties for the displayed page. Thus, in the example, the grid is
0274measured in unit of pixels. Element borders around each display element are displayed. A grid of 24 x 24 pixels is displayed. The specified fonts are used.
0275The page uses the colors described in the colors area 2272. Horizontal
0276splitters 2280, 2282 are displayed. The "Snap to Grid" property is turned off. It will be understood by persons of ordinary skill in the art that structure editor software 1 20 stores values corresponding to this Property window and each
0277Property window discussed herein in memory 104.
0278Fig. 24 is an example showing an internal memory representation of draw objects automatically generated by structure editor software 1 20. The draw objects are generated when a page layout is modified. The internal
0279representation includes a list of objects (a layout object), representing the header, body, and footer of the page of Fig. 22. Thus, the list of draw objects includes a banner draw object 2402 (corresponding to banner 2210), a
0280navigator buttons draw object 2404 (corresponding to navigator buttons 221 2), and text buttons draw object 2406 (corresponding to text buttons
0281221 4). In the described embodiment, all draw objects of the header 2202 are stored together in a layout object and a pointer points to the beginning of this list. Similarly, all objects of the footer 2206 are stored together in a layout
0282object and a pointer points to the beginning of this list. In the described embodiment, the user has not entered any elements into the body 2204 and a pointer to body elements points to a null list.
0283Fig. 25 is an example of a draw object for a page banner. It includes a
0284bitmap of the banner and the name of the page (e.g., "Products"). Fig. 26(a) is
0285an example of a draw object for a navigator button. Fig. 26(a) includes a node
0286number to which it will link when displayed by a browser, a name of the linked to page, and an image of the navigator button (e.g., a GIF image). Fig. 26(a) includes a smart link to another node, which is specified by relationship, and an image. The identity of the link is determined when the page is displayed,
0287previewed, or published. Fig. 27 is an example of a draw object for a text object. It includes a node number to which it will link when displayed by a browser, a name of the linked to page, and a string displayed in the text
0288button. In the described embodiment, each draw object contains its type, its X
0289position, Y position, width, and height. An example of a draw object of text and a draw image for an image is shown elsewhere in this document. It will be understood that each type of display element in a page (e.g., text, image,
0290button, etc.) has a corresponding type of draw object.
0291Fig. 23 is a flow chart showing steps performed by structure editor software 1 20 to display the page layout of Fig. 22 during execution of the page editor. In step 2302, the page editor determines whether this is the first
0292time that the page has been edited. If it is not the first time, in step 2304, the
0293current page layout is displayed in accordance with the draw objects for the page. The page layout will include the automatically generated banner, navigator buttons, and text buttons, unless the user has previously deleted
0294them.
0295If it is the first time, in step 2306, the editor displays the default page layout in accordance with the draw objects for the page. The page layout will include the automatically generated banner, navigator buttons, and text
0296buttons. Step 2308 allow the user to modify the page layout using drag and
0297drop methods. It will be understood that the user does not have to modify the page at all if he doesn't want to. The automatically generated page elements
0298will still be a part of the page. The user exits the page editor by, e.g., clicking on Site button 302, Style button 206, Assets button 308, or publish button 310. After the user has edited a page, he can still move the page around in the site hierarchy by using the structure editor.
0299IV. HTML Generation for the Site
0300Once the user has created a hierarchy of pages for the site as described
0301above, the user needs to be able to generate HTML for all pages of the site.
0302Fig. 28 shows an example of a display used to allow the user to publish the pages of a site. Fig. 28 shows a screen displayed when the user clicks on
0303"Publish" button 310 of Fig. 3. The screen includes three buttons "Settings"
03042802, "Stage" 2804, and "Publish" 2806. Once the display of Fig. 28 is displayed, the user can either "stage" or "publish" his site. Generally, staging is performed first and publishing is performed once the site is debugged. Staging and publishing are substantially the same, differing in when they are performed during the site development process. The user can also set configuration parameters to control the publishing or staging process. Clicking
0305on either "publish" button 2802 or "Stage" button 2804 causes the described
0306embodiment to generate HTML code for each page in the site (or only for pages indicated by the publish flag or by the user). This process is described below.
0307Clicking on "Settings" button 2802 causes a pop-up window 2808 to be displayed. Clicking on "Stage" tab 281 0 or "Publish" tab 281 2 will display
0308a window, which allows the user to specify a storage location for the staged or published site. Clicking on a "Modify" tab 2814 causes the pop-up window
03092902 of Fig. 29 to be displayed. Window 2902 allows the user to indicate
0310certain attributes of the HTML to be generated for the site (e.g., text only, black and white (grey scale), or low-resolution).
0311Fig. 30 is a flow chart showing steps performed by structure editor
0312software 1 20 to publish all the pages of a site. It will be understood that the
0313steps of Fig. 30 are performed by processor 1 02 executing instructions in structure editor software 1 20. In Fig. 30, steps 3002 through 301 0 form a loop repeated for each page in the site, i.e., for each page object stored in the
0314memory. In the described embodiment, the tree of page objects is traversed in
0315a recursive, depth first manner in a manner known to persons of ordinary skill in the art. For each page object, in step 3004, if the stacked flag of the current page object indicates that the current page is a stacked page, then
0316processor 102 creates HTML for a plurality of pages. If the current page object
0317is not a stacked page then, in step 3008, processor 1 02 builds HTML for a "normal" page. In either case, the HTML for the page is then written to a storage medium of the system.
0318It will be understood that, generally, each page object has a
0319corresponding list of draw objects describing the elements of the page for the header, body and footer of the page, and that processor 102 generates HTML in accordance with the draw objects. As described above, each list of draw
0320objects automatically includes draw objects representing automatically
0321generated banners and links (e.g., to the home, first level, parent, sibling, and/or children pages of that page). The draw objects of a page may also represent other, additional links added by the user that are not a part of the site hierarchy. Moreover, the user can use the page editor to remove some of the automatically generated draw objects links if he so desires. Unless the user
0322explicitly removes them, however, these automatically generated links are
0323present in each page layout. Thus, the generated HTML for each page will contain links to the home, parents, siblings, and/or children pages for each
0324page of the site view.
0325V. HTML Generation for a Page
0326Fig. 31 is a flow chart showing steps performed by the structure editor software to publish a normal page. Fig. 32 is a flow chart showing steps performed by the structure editor software to publish a stacked page. The steps of Figs. 31 and 32 are similar, except that the steps of Fig. 32 generates multiple HTML pages for the stacked page. Step 31 10 creates initial HTML for
0327the page as shown in Fig. 33. This step creates the beginning of an HTML
0328page. Steps 31 04-3108 create HTML tables for each of the header, body, and
0329footer as shown in Figs. 34 and 35. Step 31 10 creates final HTML for the end of the page as shown in Fig. 36. The preferred embodiment generates
0330Netscape HTML versions 3.X.
0331Fig. 32 shows the creation of a plurality of HTML pages for a stacked page. Each HTML contains, for example, data for one record of a database associated with the stacked page. Each of the plurality of HTML pages has a
0332common format including the same fields of the database and the same layout
0333of the fields. Each page of the plurality of pages has the same format, but different data.
0334Step 3314 of Fig. 33 shows that the HTML for a page includes a tag specifying the colors that a browser will use to display regular, visited, and active links. Other embodiments specify other HTML tags that specify other attributes common to the page.
0335Fig. 34 is a flow chart showing steps to build an HTML table. In the described embodiment, an HTML table is generated for the header, body, and footer of each page. Steps 3402-3408 generate a matrix in memory 104 as discussed below in connection with Figs. 37-40. Step 3410 create the HTML
0336table in accordance with the matrix as shown in Fig. 35. Fig. 35 shows steps that create an HTML table. Step 3502 writes a table tag including a border of zero width and cellpadding and cellspacing of
0337zero. Step 3504 generates a table header including column and width
0338definitions for the HTML table. Steps 3506-351 8 go through each row and column of the matrix to generate a plurality of cells in the HTML table. Some of the cells in the HTML table can be several columns wide and/or several rows
0339high. Step 3520 generates an end of table tag.
0340Fig. 37 is an example of first steps involved in determining an HTML table size for a layout element of a header, body, or footer. In the example, the
0341layout element has four display elements. Each display element corresponds to
0342one draw object of the page. As discussed above, each draw object has an X
0343position (a start row) and a length. Each draw object also has a Y position (a
0344start column) and a height. For each object, a first column edge is the X start position and a second column edge is the X start position plus the length. In addition, for each object, a first row edge is the Y start position and a second row edge is the Y start position plus the height. Processor 102 finds the row
0345edges and columns edges for a current page, yielding data 3702 and 3704.
0346Fig. 37 is an example of second steps involved in determining an HTML table size for a layout element. Once the column and row edges of the draw
0347objects are determined, the edges are sorted, duplicate edges are removed from
0348the sorted list, yielding unique row edges and unique column edges (steps 3404 and 3406 of Fig. 34). The unique rows edges and column edges are then counted. In the example, the objects have six column edges and seven row edges. Once the unique row edges and column edges are determined, the
0349column widths and row heights for each column and row are determined.
0350Fig. 39 is an example of a matrix 3802 generated in accordance with the edges and draw objects. Matrix 3902 has a number of rows equal to the number of row edges plus one. The matrix has a number of columns equal to
0351the number of column edges plus one. Thus, in the example, the matrix has seven columns and eight rows. Each element 3904 of the matrix has a pointer field and an occupied flag. The element of row 7, column 2 of the matrix
0352points to object number 1 and is marked as occupied. The next four elements in row 2 are also marked as occupied. The element of row 3, column 3 points to object number 2 and is marked as occupied. The element of row 2, column 5 points to object number 3 and is marked as occupied. The next four
0353elements in column 5 are also marked as occupied. The element of row 5,
0354column 3 points to object number 4 and is marked as occupied.
0355Fig. 40 is a block diagram of how the matrix 3902 is used to generate an HTML table. The HTML table is used by a browser to display a portion of a page on display device 1 60 (such as a header, body, or a footer, (an alternate
0356embodiment of the present invention creates a single table for each page of the site). Each element of the matrix is used to generate a cell in an HTML table (although some cells occupy more than one row or more than one column) . For
0357example, the matrix element in row 1 , column 1 causes an empty table cell to
0358be generated. Each row in the HTML table has a height in pixels that is equal to the height for that matrix row. Each cell in the HTML table has a width that
0359is equal to the width of the matrix for that column.
0360As is known to persons of ordinary skill in the art, the cells in the table
0361can be of varying sizes (i.e., can use the HTML tags "ROWSPAN" and
0362COLSPAN"). The matrix element in row 2, column 5 causes generates of a cell that spans four rows (ROWSPAN = 4). The matrix element in row 7, column 2
0363causes generation of a cell that spans five column (COLSPAN = 5).
0364Fig. 41 shows an example of a Style display. The display of Fig. 41 is shown when the user selects Style button 306. The Style button display allows the user to select an overall default appearance of all pages in the site.
0365The user can override the style for a given page by defining a different style for
0366the page (not shown). In the described embodiment, the values shown in Fig. 41 are stored in locations of memory 104. The automatic generation of banners, navigation buttons, and text buttons is performed in accordance with user-specified style values.
0367Fig. 42 shows an example of an Assets Display. The Assets display shows the files, links, and objects in the data processing system. For example, the assets shown in Fig. 42 are the draw objects for the "Products" page of
0368Fig. 22.
0369Fig. 43 shows an example of a plurality of link dialog boxes, showing a
0370structural link, an internal link, and an external link.
0371Fig. 44 is a flow chart showing identification of structural links for a page. The links preferably are identified when the page is displayed, previewed or published. Internal and external links are "absolute" links. Structural links
0372are identified only as "next sibling link," "next child link", etc. For each link, the node-that-is-linked-to is identified by looking at the page hierarchy specified by the page layout tree. After the node is identified, the processor finds the URL, name, etc of the node and generates the display or HTML for the
0373structural link.
0374In summary, the described embodiment of the present invention allows a user to define a hierarchy of pages for a Web Site. A structure editor in
0375accordance with the present invention automatically creates page objects for
0376each site that reflects the user-defined site hierarchy. Each page has an associated plurality of draw objects that define the display elements of the page. When the user "publishes" a page, the described embodiment generates
0377HTML code for each page. Thus, even if the user never edits a page, and only
0378creates a site hierarchy, each page will have an automatically created banner and automatically created links to other pages of the site. The links can be structural links (smart links), internal links, or external links. Moreover, the
0379pages of the site conform to a user-specified style.
0380Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein.
0381It is intended that the specification and examples be considered as exemplary only, with a true scope of the invention being indicated by the following claims and equivalents.
0382/* NetObjects plctotoj <sub>*</sub>h definition of piture object
0383*/
0384♦ifndef PICTOBJ_H #define <sup>"</sup>PICTOBJ H
0385♦include "drawobj.h" #include "resource.h" ♦include "DOFile.h" #include "dlgbase.h" class CModelessInsp; class CHotSpot; class CPictureGeneral ; class CDrawRect;
0386// flags for picture class ♦define DRAW_NATURAL 1 //object not stretched ♦define DRAW_STRETCHED 2 //object stretched to fit ♦define DRAWJTILED 4 //objecxt tiled ♦define DRA_HOTSPOTON 16 // object has hot spots turned on ♦define DRAW_H_ALIGN_LEFT 32 // alignment ♦define DRAW_H_ALIGN_CENTER 64 // alignment ♦define DRA_H_A IGN_RIGHT 128 // alignment ♦define DRA_V_ALIGN_TOP 256 // alignment ♦define DRA_V_ALIGN_CENTER 512 // alignment ♦define DRAW V_ALIGN_BOTTOM 1024 // alignment ♦define DRAW~GIF_SOURCE 2048 ♦define DRAW_JPEG_SOURCE 4096 ♦define DRAW_UNKNOWN_SOURCE 8192 ♦define DRAW_GENERATEA WAYS 16384 // always rename and generate this gif ♦define DRAW DATAOBJECT 32768 // this is a data object
0387// 'list' class for hot spots (requires afxtempl.h) typedef CTypedPtrLiεt<COb ist, CHotSpot*> CHotSpotLiεt; class CDrawPicture : public CDrawRect
0388{ protected:
0389DECLARE_SERIAL(CDrawPicture) ; BOOL LoadBitmapO ; CDrawPicture() ; public:
0390CDrawPicture(const CRect& position) ; -CDrawPicture() ; virtual void Serialize(CArchive iar) ?
0391//virtual void Serialize(CArchiveft ar) ; virtual void Draw(CDC* pDC,CLayoutView* pView,BOOL bXorOutline ■ FALSE, CRect *pDrawRect = NULL) ; void TileBackGround(CDC* pDC, CLayoutView* pView, CRect *pRect) ; virtual BOOL SetBitmap(const CPDStringt aFileType cFILE_IMAGE_TYPE) ; //does the file dialog etc.
0392BOOL Changed(void) ; void SetStretch(UINT) ; UINT GetStretch() ; virtual CRect Getl agePosition(CRect *position = NULL) ; virtual CRect GetImageSize() ; void SizeToImage(CLayoutView *p) ; int GetlmageHandle(void) {retur m_ImageHandl ; ) ; long ConvertImage(CPDS ring *theFileName,
0393CPDString * theFilePath) ;
0394BOOL SetBitmap(const char *pStr, const CPDStringβt aFileType = cFILE_IMAGE_TYPE) ; virtual int GetSourceType(void) ; virtual void OnOpen(CLayoutView* pView) ;
0395CHotSpotList* GetHotSpotεO { return &m_objects; } virtual CDrawObj *RemoveChiId(CDrawObj *obj) ; virtual void AddChild(CDrawObj *obj) ;
0396CHotSpot* HotSpotAt(const CPointfc point,CLayoutView * pView) ;
0397CHotSpot* HotSpotAt(const CRect& rect,CLayoutView * pView) ; void DeleteHotSpots(void) ; void MakeChildrenFit(CRect *newPosition = NULL) ; virtual void EndMov (CLayoutView* pView = NULL) ; virtual void MoveChildren(CRect *lastPoistion = NULL, CRect *newPosition = NULL) ; // offsets all childern difference of last to new position void MoveChildren(CPoint point) ; // offsets all children using point coords virtual CDrawObj* FindChild(int id) ; virtual BOOL mAutoGenerated() ; virtual int HitTest(CPoint point, CLayoutView* pView, BOOL bSelected) ; void SetHotSpotsOn(BOOL) ; BOOL GetHotSpotsOn(void) ; void SetDataObjectOn(void) {m_PictureFlags J= DRAW DATAOBJECT; ) virtual CDrawObj* Intersects(const CRect* rect, CLayoutView *pView) j virtual void AddPropPage(CObListi) ; virtual void AddProperties(CMenu *pPopup) ; virtual BOOL IsParent(void) {return TRUE;); virtual CDrawObj* GetSelectedChild(void) ; virtual void SetSelectedChiId(CDrawObj *pObj , BOOL set=TRUE) ; virtual void SaveUndo(CArchive& ar,PROPERTY_TYPE,CLayoutView *pView) ; virtual void LoadUndo(CArchive& ar,PROPERTY_TYPE, CLayoutView *pView) ; virtual void SetAssetInfo(PROPERTY_TYPE type = DRAWOBJ) ; virtual void SetObjectData(void) ; virtual CDrawObj* Clone(CLayoutData *pLayoutData) ; virtual void SetlnitialValue (CLayoutView*) ; virtual BOOL DrawImageToMemory (CDC *) ; CString m_csName; int m_PictureFlags;
0398CHotSpotList m_objects; void SetGenerateAlways(BOOL b = TRUE) ; void SetVAlignFlag(int) ; void SetHAlignFlag(int) ;
0399BOOL HasPicture() (return m_pDIB != NULL;} void mGenerateHTML(CPDBuffer* theBuffer) ; protected: int m_ImageHandle; char * m_pDIB;
0400BITHAPINFO * m_biInfo; int m_biwidth; int m_biHeight; char * m_biBits; private: static CPictureGeneral *m_pPicturePro ; protected:
0401// { { AFX_HSG (CDrawPicture) afx_msg void OnPictureProperty ( ) ; afx_msg void OnEditClearQ ; // } )AFX_MSG DECIARE_MESSAGE_MAP()
0402// PictureAlign ent dialog class PictureAlignment : public CT2Dialog
0403{
0404// Construction public:
0405PictureAlignment (CWnd* pParent = NULL) ; // standard constructor
0406CWnd *parentWnd; BOOL m_Cancel ; UINT v ; UINT h; DrawShape user; void SetUser (DrawShape d) { user = d; )
0407// Dialog Data
0408// { { AFX_DATA ( PictureAl ign ent ) enum { IDD = IDD_PICTURE_ALIGNHENT } ;
0409// NOTE: the ClassWizard will add data members here // } )AFX_DATA
0410// Overrides
0411// ClassWizard generated virtual function overrides
0412// { ( AFX_VIRTUAL ( PictureAl ignment) protected : virtual void DoDataExchange (CDataExchange* pDX) ; //
0413DDX/DDV support
0414// } )AFX_VIRTUAL
0415// Implementation protected :
0416// Generated message map functions // ( { AFX_MSG (PictureAlignment) virtual void OnOK() ; // } }AFX_MSG DECLARE_MESSAGE_MAP ( )
0417) ?
0418tendif //
0419_PICT0BJ_H//////////////////////////////////////////////////////
0420/////////////////////// // CDrawText - Text Object
0421♦ifndef _CRICHTEXT_H__ ♦define _CRICHTEXT_H_ //l
0422♦include "drawobj .h"
0423// General stuff
0424/////////////////////////////////////////////////////////////////
0425////////////
0426// Tokens that we store in the token steam
0427// After a token there is potential more bytes and other tokens
0428// If this is the case then it is noted in the comments after the token
0429// All token take up 1 byte, Each item noted in [] take one byte
0430// Note that all that contain data have a end token to enable backwards searching typedef enu (
0431T_TEXT = 0, // Dummy token just use to communicate that its a text token
0432T_NULL, // Place holder to break up findtoken
0433// Text formatting tokens turn on/off T_BOLDON, // Bold T_BOLDOFF,
0434T_ITALICON, // Italics
0435T_ITALICOFF,
0436T_UNDERLINEON, // underline T JNDERLINEOFF, T_STRIKEOUTON, // strikeout T_STRIKE0UTOFF,
0437T_BLINKON, // Blinking
0438T_BLINKOFF,
0439T_FIXEDON, // Fixed pitch font
0440T_FIXEDOFF,
0441T_DUMMY1, // Raw html code. Used to insert HTML code directly into the token stream
0442// Text formatting with extra data
0443T_FACE, // Font face stored as T_FACE <name>
0444T_FACE
0445T__SIZE, // Size of font; stored as T_SIZE [size]
0446T_SIZE
0447T_COLOR, // Change to COLORREF color; stored as T_COLOR <COLORREF> T_COL0R
0448T_HEADING, // Heading marker; stored as T_HEADING
0449[heading id) T_HEADING - should follow <P>
0450T_PARAFMT, // Formatting belonging to T_PARAGRAPH - stored as T_PARAFMT <ParaFormat> T_PARAFMT
0451T_SYMBOL, // Stores a symbol <T_SYMBOL> symbol value (int) <T_SYMBOL> T__HTMLTAG, // A HTML tag stored
0452// String flow control T_END, // End of text object
0453T_NEWLINE, // New line - still inside the paragraph
0454T_PARAGRAPH, // New paragraph T_SOFTNEWLINE, // Soft end of line - autowrap symbol
0455// Support for html links
0456T_LINKNAME, // Link name stored as T_LINKNAME <display text T_LINKNAME2
0457T_LINKNAME2,
0458T_LIN URL, // Link URL stored as T_LINKURL <url>
0459T_LINKURL2
0460T_LINKURL2 } TokenTypes;
0461// Notes:
0462// T_COL0R:
0463// The COLORREF is stored as 4 bytes. The maximum byte that is normally 0x00 will be
0464// 0x00 when the color is reset back to the default color defined for the view, In this case
0465// the rest of the color is unused. When a color ride is in effect the byte is 0x00.\
0466// T_PARAGRAPH: The line number is stored in the paragraph as
0467<Px|xP>
0468// T_SOFTNEWLINE: Only used for return in FindToken
0469// Link should be stored as
0470// <T_LINK1> tokens <T_LINK2> URLStruct <T_LINK3>
0471♦define 0VERRIDE_0F( CR) * ( ( (char*) i(CR) )+3 )
0472♦define MAX_INDENT 31
0473// Alignment settings as they apply to one paragraph typedef enum (
0474AlignLeft = 0,
0475AlignCenter,
0476AlignRight
0477);
0478// Builit types typedef enum {
0479Bull_None = 0,
0480Bull_Bullit,
0481Bull_Square,
0482Bull_Disc,
0483Bull_ABC,
0484Bull_abc,
0485Bull_III ,
0486Bull_iii,
0487Bull_123, Bull_UnUsed, // Used when promoting and demoting paragraphs
0488)
0489// Pitchtype, used to select between the proportional and fixed type font typedef enum (
0490Proportional,
0491Fixed, ) PITCHTYPE;
0492// T_PARAFMT <ParagraphFormat> T_PARAFMT, size = 4 bytes struct ParaForat { unsigned short aAlign : 2; unsigned short Undent : 5; // [ 0 .. 31 ] levels unsigned short iBullit : 4; unsigned short iOrder : 10; // Order item number [0..1024[ unsigned short bStart : 1; // Special start value for ordered lists
0493);
0494// Usage of the Font list
0495♦define FONTINDEX_AUTOMATIC 0 // position of the Automatic font
0496♦define FONTINDEX_MAX 127
0497// The complete set of font settings as will be treated for text object.
0498// These settings are at any given location applied to the current setting
0499// in the global font setting. struct FontAttrib (
0500BYTE rgbRed; // l b
0501BYTE rgbGreen; // 2 b
0502BYTE rgbBlue; // 3b
0503BOOL bColorOverride : 1; // Is the color currently overridden short iSize : 7; // b
0504BOOL bBold : 1;
0505PITCHTYPE ptPitch : 3;
0506BOOL bltalic : 1;
0507BOOL bUnderline : 1;
0508BOOL bStrikeout : 1;
0509BOOL bBlink : 1; // 5 b
0510BOOL bURL : 1; // Are we inside an URL display string unsigned short iFontlndex : 7 ; // 6 b
0511ParaFormat pf; // 10 b
0512);
0513// URL control structure
0514/////////////////////////////////////////////////////// // The URLStruct is stored between the LINK and URL struct URLStruct
0515{ int iJavaEventld;
0516) class ExtFontAttrib l
0517// Current attribute; public:
0518// Utility information
0519CString sHeading ; int istyleldx ;
0520URLStruct urllnfo;
0521FontAttrib f Attrib ;
0522// Functions int operator= (ExtFontAttrib fcfs) ; ExtFontAttrib &operator= (ExtFontAttrib ifs) ;
0523) i
0524// Search commands to the FindText function
0525♦define FIND_HOHE 1
0526♦define FIND_END 2
0527♦define FIND_PREVCHAR 3
0528♦define FIND_NEXTCHAR 4
0529♦define FIND__PREVWORD 5
0530♦define FIND_NEXTWORD 6
0531♦define FIND_PREVPARA 7
0532♦define FIND_NEXTPARA 8
0533♦define FIND_PREVLINE 9
0534♦define FIND_NEXTLINE 10 class CLayoutView;
0535♦define TALIGN_LEFT 0X01 ♦define TALIGN_CENTER 0x02 ♦define TALIGN_RIGHT 0x04 struct FindReplaceData ( int ilndex;
0536CFindReplaceDialog *pFRDlg; int iFoundl; int iFound2; int careto, caretl; BOOL bRewrapped;
0537);
0538// CDrawText
0539///////////////////////////////////////////////////////////////// //////////// struct CaretStruct
0540(
0541BOOL getlndex; // is index valid, if not then pos is valid - calc index in UpdateCaret // index into m_text; // if index set - status if its OK
0542// mouse pos, not maintained if
0543// height of character at
0544<img file="WO9804983A1_D0001.tif" /> struct LinelnfoStruct
0545{ public: int width; // width of text excl. the space needed for indent or bullit int heigh ; int base;
0546CPoint ul; // Top left corner of the text box, if bullit then its before the text box int idxLine; // Index into the text stream of line, either point to <P> <BR> or to char that is first on εoftbreak line
0547FontAttrib fa; // FontAttrib for the start of the line after all heading and aling have been applied int iStyleldx; // Index of the style used int fFlags; // Flags for the line
0548) i
0549// Line flags
0550♦define LINE_PARAGRAPH 0x0001 // Line is start of new paragraph
0551// Different hardcoded sizes that HTML assumes
0552♦define INDENT_SIZE 40 //700 // Total indent size
0553♦define BULLIT_SIZE 30 //300 // Space for bullit
0554♦define BULLIT_SPACE 6 //50 // Space after bullit and before text
0555// Minimum Wrap width accepted ♦define MIN_WIDTH 10
0556// Edit mode flags
0557♦define EDIT_READONLY 0x00000001 // Field is read-only - user may not change ny content - inspector is disabled
0558♦define EDIT_ASCIIFIELD 0x00000002 // Field may only contain ascii string
0559♦define EDIT_SINGLELINE 0x00000004 // User must not be able to insert line break or paragraph
0560// Undo information Insert bytes into buffer Delete bytes from buffer Position carets assign single byte in buffer assign range to T_NULL move range inside buffer assign range of bytes in buffer <img file="WO9804983A1_D0002.tif" /> whole object should be rewrapped
0561)? struct UndoRecord { char nOpType; union {
0562// Used when inserting (Oplnsert) or deleting (OpDelete) bytes in the stream
0563// and when setting bytes to T_NULL (OpSetT_NULL)
0564// and when assigning a range of bytes (OpAssignBytes) .
0565// and used for OpMoveBytes
0566// When OpDelete it is followed by bytes deleted struct { unsigned short iNoBytes; unsigned short ilndex; } insdel ;
0567// Used when position the carets struct ( unsigned short indexO; unsigned short indexl; ) caret;
0568// Used when []= assigning a single byte struct { unsigned short ilndex; char cOldByte; ) assign;
0569) dat ;
0570♦define UNDOBUFFER_INCREMENT 256 // increase buffer increment
0571♦define UNDOBUFFER_MINSIZE UNDOBUFFER INCREMENT
0572♦define MAX_FONT_LENGTH 256 // Max size for a font face name
0573♦define PRIVATE_KEYSTATE
0574♦define MAX TEXT (65536 * 4) ♦define MAX TEXT EDIT (MAXJTEXT - 1000) ♦define WRAP FIRSTLINE ♦define WRAP~LASTLINE MAX TEXT ♦define WRAP JNDEFINED -1 extern BOOL IsChar( char c) ; extern BOOL IsToken( char c) ; extern BOOL WordDelimiter( char c) ; extern BOOL HardLineDelimiter( char c) ; extern BOOL LineDelimiter( char c) ; extern BOOL ParaDelimiter( char c) ; extern BOOL ParaFormatting( char c) ; extern BOOL IsFormatToken( char c) ; extern BOOL IsNonNormalizeToken( char c) ; extern BOOL IsOrdered( int iType) ; extern BOOL IsUnordered( int iType) ; extern int TokenSize( int token, BOOL bForward); extern int iT2clipbordFormat; extern int iRTFclipboardFormat; extern int [ ] ; extern int d[] » class CTextStyle;
0575/ J Class CDrawText ///////////////////////////////////////////////////////////////
0576//class CTextHTMLGenerator; class CDrawText : public CDrawRect
0577( friend class CTextHTMLGenerator; public: char *m_tex ; int m_nText;
0578BOOL bSelectAnchor; // Are we currently selecting using achor point static CStringArray *m_FontFaceArray; // Font face list private: int ιa_needsWrap;
0579CPoint m~LeftMargin;
0580CPoint m_RightMargin; int clickCount; //dont start edit mode until second click
0581CFont *m_oldCFont;
0582CFont m_CFont; //Active font, setup during calls to gettextsegment int m_iWrapIdxl; int m_iWrapIdx2 ; int m_maxTβxt; ///maximum allocated text int insertlndex; int m_haveCaretAndHeight; int m iCaretWidth;
0583CRgn *m_pRgnCaret; //marked block
0584BOOL m setMouseXPos;
0585// For mouse selection static CaretStruct *mjpDblClick_Carets; // contains dbl marked selection while mouse is still down static CaretStruct *m_pTriClick_Carets; // contains tri marked selection while mouse is still down static CaretStruct *m_pClick_Carets; // contains mouse marked selection while mouse is still down static BOOL m_bMDragθverride; // Override that we must
0586NOT do word extension in single click draw select
0587LinelnfoStruct * m_lineInfo; // display lines int m_nLines; // used lines in above int m maxLineε; // max no lines int m_hMarg; int m_vMarg; static CTextStyle *m_pTextProp; //property sheet belonging to object static BOOL bReturnFirstPara; //return a <P> at start of data
0588FindReplaceData
0589*m_FindReplace;
0590BOOL m_Transparent; // Is the control transparent
0591BOOL m_LockedSize; // Is the text size locked
0592CSize m_sizeLockSize; // The locked size
0593UINT m EditMode; // Edit mode flags
0594CO ORREF m_BackGroundColor; // Background color when not transparent char *m_pUndo; // Undo record buffer int m_nUndoLen; // length of under buffer int m_iUndo; // Next location in undo buffer
0595BOOL bRecordUndo; // wheater to record or not in : :Insert and : :Delete CaretStruct m__caret[2]; //cursor/block location, if postions are the same, no marking
0596ExtFontAttrib m_FontSet; // Settings set while gettextsegment traverses text ExtFontAttrib m_01dFontSet; // Compare copy for SelectFont int m_TrueHeight; //true height of text, different than size when m_Locked is TRUE private: static COLORREF m_TextColor; static COLORREF m TextLinkColor; protected:
0597DECLARE_SERIAL(CDrawText) ; CDrawText() ; public:
0598CDrawText(const CRect& position) ; -CDrawText() ; virtual void Serialize(CArchive tar) ; virtual void AddProperties(CMenu *pPopup) ; virtual void Draw(CDC *pDC,CLayoutView* pView,BOOL bXorOutline « FALSE, CRect *pDrawRect -= NULL) ; virtual void MoveTo(const CRecti positon, CLayoutView* pView = NULL, BOOL fAutosize = TRUE,BOOL fOutline = TRUE) ;
0599//property sheet support virtual void AddPropPage(CObListi) ; virtual void Select(CPoint pi, CPoint p2) ; virtual void KeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) ; virtual void CharDown(UINT nChar, UINT nRepCnt, UINT nFlags) ; virtual void SysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) ; virtual void StartMove( void) ; virtual void EndMove( CLayoutView *pView) ; virtual void OnLButtonDow (CLayoutView* pView, UINT nFlags, const CPointS point) ; virtual void OnLButtonUp(CLayoutView* pView, UINT nFlags, const CPoin t point) ; virtual void OnMouseMove(CLayoutView* pView, UINT nFlags, const CPoint& point) ; virtual void OnLButtonDblClk(CLayoutView* pView, UINT nFlags, const CPointδ point); virtual void SaveUndo(CArchive* ar, ROPERTY TYPE,CLayoutView ♦pView) ; virtual void LoadUndo(Cλrchive* ar,PROPERTY_TYPE,CLayoutView *pView) ; virtual void mSynchronizeAssetNumbers() ;
0600BOOL virtual FindReplace( frOperations frOp, void *pData) ; void Activate( TrackerState tsNewState ■= tsNor al) ; void Deactivate( TrackerState tsNewState = tsNormal) ; virtual void SetFocus( void) ; virtual void KillFocus( void); void GetText(char ** data, int * nData) ; void SetText(char * data, int nData) ; void SetλsciiText(char *pString, BOOL bKeepFor at) ; char *GetAsciiText( void); void mGenerateHTML(CPDBuffer* theBuffer) ; void GetFont(ExtFontAttrib *fs, int iCaretldx = -2) ; void SetFont(TokenTypes t_type) ; void SetFontAlignment( int iAlign) ; void SetFontBullit( int iBullit) ; void SetFontSize( int isize) ; void SetFontColor( COLORREF *pColor) ; void SetFontFace( char *pFontFace) ; void Changelndent( int ichange) ; void SetSizeList( CCoboBox *pComboBox, ExtFontAttrib* fs) ; void SetBulletList( CComboBox *pComboBox, ExtFontAttrib* fs) ; int FindFon Index( char *pFontFace) ; static void InitFontFaceArray( void); static void SetFontFaceList( CComboBox *pComboBox) ; void SetStyle( CString *psStyle) ; void ApplyURL(CString* εDisp, CString* sURL, char lToken, char rToken,int iJavaEventld — 0) ; void SetURL( CString* sDisp, CString* εURL, BOOL bAddSpaces = FALSE, int iJavaEventld = 0);
0601BOOL GetURL( CString* sDisp, CString* εURL, int* linkl, int* link2, int* urll, int* url2, int* iJava) ; void UpdateURL( CString* sURL, int il, int i2) ; void Unlink( int il, int i2, int 11, int 12);
0602BOOL GetSelectedText( CString* sText, int* il, int* i2) ;
0603// Java event access functions int GetJavaEvent( void) ;
0604BOOL SetJavaEven ( int iJavaEventld) ; // External access methods COLORREF GβtBackColor( void) ; void SetBackColor( COLORREF c) ; BOOL GetTransparent( void) ; void SetTransparent( BOOL t) ; BOOL GetLockedSize( void) ; void SetLockedSize( BOOL Is) ; BOOL IεStyleUεed( CString *psStyleName) ; void ResizeToOneLine( CLayoutView *pView, int ilndex « 0) ; void ResizeObject( CLayoutView *pView, int ix, int iY) ; void GetWordCounts( int *pLine, int *pPara, int *pWord, int *pChars) ;
0605UINT GetEditMode( void) {return m_EditMode; } ; void SetEditMode( UINT fFlags) (m_EditMode = fFlagε;); static void GetMinRect(CRect*) ; int GetTrueHeight() ; private: void CalcFontSizes( PITCHTYPE pt, int *pFontSizes) ; virtual BOOL HasFont() (return TRUE;)
0606BOOL CreateFont( CFont* font, ExtFontAttrib* fs) ; void InitSelectFont( CDC *pDC) ;
0607BOOL SelectFont(ExtFontAttrib* fs, CDC *pDC) ; void AsciiSelectAll( void); void MouseSelectWord(CLayoutView* pView, UINT nFlags, const CPoint* point) ; void MouseSelectParagraph(CLayoutView* pView, UINT nFlags, const CPoint* point) ; void UpdateCarets( CLayoutView *pView) ; BOOL IsEmptyO ; char extChar(int* istart) ; char PrevChar(int* istart) ;
0608BOOL FindStream( int* index, int where) ; void GetFontAtlndex(ExtFontAttrib tfs, int index) ; int GetParaFormat( int iLine) ; int FindFirstLineAtLevel ( int iLine, int iLevel); void RewrapLevelAtLine( int iLine, int iLevel); void ApplyBulletToParagraphLevel( int iLine, int iBulletType) ; void ApplyParaFormat( int iKind, int iValue) ; void ApplylndentToParagraph( int iLine, int iChange) ; int ApplyStyleToPara( CString *psStyle, int iPara, BOOL bRemoveFormatting) ; void ApplyStyle( CString *psStyle, BOOL bRemoveFormatting); void SetsimpleType( char *tokenl, char *token2 , int iTokenSizel, int iTokenSize2, BOOL bSymetric = TRUE); void LinelnfoUpdate( int iLocation, int nData) ; void Insert(int ilndex, const char * data, int nData) ; void Insert(int ilndex, char token) ; void Delete(int nData); void DelText(int indexl, int index2, BOOL bPreserveTokanβ » TRUE) ; void EnsureURLforDelete( int* idxl, int* idx2) ;
0609BOOL DeleteSelection( void) ; int ExtractAsciiToBuffer( char *pText, int ilndexl, int ilndex2, int iLen) ; public: void Delete( int index, int count) ; private:
0610BOOL SkipJunk( int* index, BOOL bForward) ; void UpdateCaret(char token, int iC, int nL, int istart, int nChars, CPoint gpos, CDC *pDC) ; void UpdateselectRegion( CLayoutView* pView) ; void RemoveSelectRegion( CLayoutView* pView) ; void FreeSelectRegion( void) ; void lnvertSelectRegion( CDC *pDC) ;
0611CRgn *GetSelectRegion( void) ; void ScrollCaretIntoView( CLayoutView* pView, int iCaret) ; void UpdateWndCaret( CLayoutView* pView) ; void FreeWndCaret( CLayoutView* pView) ; void UpdateMarking( CLayoutView *pView) ; void UpdateTextθbject( CLayoutView *pView = NULL) ; int FindMatchToken( char token, int* iSize, int istart, int iEnd) ; int CompressTokens( int idxl, int idx2) ; int NormalizeStream( int idxl, int idx2, int *piNewEnd) ; void Normalize( int idxl, int idx2) ; void Normalize( void) ; void InitFontSet( ExtFontAttrib* fs) ; void InitFontSettings( void); void InitFindToken( BOOL bReturnFirstParagraph = FALSE) ; int FindToken( int* istart, int *iText = NULL, int *iTextLen = NULL, int iLineBreak = 0) ; BOOL FindText(int where) ; void Realloc(int reqSize) ;
0612// Wrap functions void AllWrapped( void) ; void RewrapParagraph( int iParaldx) ; void Rewrap( int idxl, int idx2) ; void RewrapLines( int iLinel, int iLine2) ; void RewrapAll( void) ; void Wrap( CLayoutView *pView, CDC *pDCin = NULL) ; void SkipLineDelimiter( int* idx) ; void SkipRTFO i void SelectText( CPoint pi, CPoint p2 ) ; void Positionlndex( int* index) ; void PositionCaret( int idx) ; void PoβitionCarβtβ( void) ; int DocToClientToDoc( CDC *pDC, int iY) ? void DisplayBackground(CLayoutView* pView, CDC *pDC, CRect *pDrawRect) ; void Display(CLayoutView* pView, CDC *pDC, CRect *pDrawRect) ; void DisplayText(CDC *pDC, BOOL extentOnly, BOOL drawItAll) ;
0613void CommonlnitializationO ; int EnsureCorrectForCopy( int* idxl, int* idx2) ; void EnsureCorrectStartMarking( int* si, int* ei) ; int GetSelection( int* si, int* ei) ; int InsertColorSize( FontAttrib* fa) ; int InsertSettings( FontAttrib* fa) ; char *MakeθnSettings( FontAttrib *fa, int *pLen, BOOL bOnlyColorSize = FALSE) ; int Co pressTNULLs( char *pTokens, int len, int idxl, int id 2, BOOL bUpdateCaret) ; void CompressTNULLs( void) ; void ClearRegion( int* idxl, int* idx2) ; void EnsureURLforCopy( int* idxl, int* idx2) ; void RemoveURLs( char *pToken, int len) ; void InvalidateLines( int iFirstLine, int iLastLine) ; void InvalidateLine( int iLine) ; int GetLineFromlndex( int index) ; void InvalidateRange( int idxl, int idx2) ; void InvalidateSelection( void) ; void InvalObjAndParent( CLayoutView *pView, BOOL bErase = TRUE) ;
0614// Undo buffer functions void InitUndo( void); void AllocUndo( int iNeeded) ; void RecordUndo( UndoOp opcode, int ilntl, int ilnt2 , void *pBytes » NULL) ; void Freeϋndo( void) ; void EmptyUndo( void) ; void MarkUndo( void) ; void Undo( void) ; void RecordCarets( void) ; void RecordRewrapAll( void); void AssignTokenUndoable( int ilndex, char cNewValue) ; void AssignTokensUndoable( int ilndex, int iNoBytes, char *pData) ; void SetT_NULLundoable( int ilndex, int iNoBytes) ; void MoveTokensUndoable( int iDest, int iSrc, int iSize) ; void OnPreUndo(void *pObj); private: void MoveDelete( int iKind) ; BOOL FindMatch( BOOL bCaβeSenβitivβ, . it istart, int iLen, LPCSTR pTarget, int iiNext) ;
0615BOOL Find( void) ;
0616BOOL Replac ( void) ;
0617BOOL nextFindReplace(CLayoutView *pView, frOperations frop, int* iReplace) ;
0618;
0619<img file="WO9804983A1_D0003.tif" />
0620//♦define COLOR_LINK RGB(0,0,255) //♦define COLOR_RAWHTML RGB(255, 0, 0) ♦endif
Contents5
46 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38 Sheet 39 Sheet 40 Sheet 41 Sheet 42 Sheet 43 Sheet 44 Sheet 45 Sheet 46
Every citation, both ways
| Document | Relation | Office | Category | Cited during |
|---|---|---|---|---|
| EP1643382A2 | Cited by | European Patent Office (EPO) | – | Examiner |
| GB2354923A | Cited by | United Kingdom | – | Search report |
| EP2575053A1 | Cited by | European Patent Office (EPO) | – | Search report |
| EP2575053A1 | Cited by | European Patent Office (EPO) | – | Search report |
| WO9966433A1 | Cited by | World Intellectual Property Organization (WIPO) | – | International search |
| WO2013045177A1 | Cited by | World Intellectual Property Organization (WIPO) | – | International search |
| EP0973105A2 | Cited by | European Patent Office (EPO) | – | Search report |
| CN110293539A | Cited by | China | – | Search report |
| WO0051033A3 | Cited by | World Intellectual Property Organization (WIPO) | – | International search |
| EP0973105A3 | Cited by | European Patent Office (EPO) | – | Search report |
| WO2013045177A1 | Cited by | World Intellectual Property Organization (WIPO) | – | International search |
| WO0051033A2 | Cited by | World Intellectual Property Organization (WIPO) | – | International search |
| KR101143198B1 | Cited by | Republic of Korea | – | Examiner |
| WO9966433A1 | Cited by | World Intellectual Property Organization (WIPO) | – | International search |
| KR101143198B1 | Cited by | Republic of Korea | – | Search report |
| WO9428480A1 | Cites | World Intellectual Property Organization (WIPO) | A | International search |
| WO9428480A1 | Cites | World Intellectual Property Organization (WIPO) | A | International search |
| BALDAZO R: "Battle of the Web site builders", BYTE, JULY 1996, MCGRAW-HILL, USA, vol. 21, no. 7, ISSN 0360-5280, pages 157 - 158, XP002046654 | Non-patent | – | – | International search |
| HOWLETT D: "How to build your own Web site", PC USER, 10-23 JAN. 1996, EMAP COMPUTING, UK, no. 274, ISSN 0263-5720, pages 41 - 42, 44, XP002046655 | Non-patent | – | – | International search |
| ROUSSEAU B: "PUBLISHING ON THE WEB", CERN SCHOOL OF COMPUTING, 25 October 1995 (1995-10-25), pages 279 - 293, XP000578592 | Non-patent | – | – | International search |
11 members in 3 offices; this record represents the family
Members11
| Document | Office | Kind | |
|---|---|---|---|
| WO9804978A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO9804983A1This record | World Intellectual Property Organization (WIPO) | A1 | |
| AU3808297A | Australia | A | |
| AU3808397A | Australia | A | |
| US5845299A | United States of America | A | |
| US5911145A | United States of America | A | |
| US2002023111A1 | United States of America | A1 | |
| US2004205594A1 | United States of America | A1 | |
| US2007118793A1 | United States of America | A1 | |
| US7246307B2 | United States of America | B2 | |
| US8935602B2 | United States of America | B2 |
7 legal events, as 3 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Ep: pct application non-entry in european phase122 | 122 | WO | |
| Non-entry into the national phaseNENP | NENP | CA | |
| Non-entry into the national phaseNENP | NENP | JP | |
| Ep: the epo has been informed by wipo that ep was designated in this application121 | 121 | WO | |
| Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)DFPE | DFPE | WO | |
| Designated statesAK | AK | WO | |
| Designated countries for regional patentsAL | AL | WO |
Numbers
- Publication
- 98/04983
- Application
- 9712820
Titles2
- English
- HIERARCHICAL STRUCTURE EDITOR FOR WEB SITES
- French
- EDITEUR DE STRUCTURES HIERARCHISEES POUR SITES DU WEB
Classification
- CPC, 4
- G06F16/9558
- G06F40/10
- G06F40/166
- G06F40/143
- IPC, 2
- G06F17 30
- G06F40 143
Designated states24
- Regional, 17
- Austria
- Belgium
- Switzerland
- Germany
- Denmark
- Spain
- Finland
- France
- United Kingdom
- Greece
- Ireland
- Italy
- Luxembourg
- Monaco
- Netherlands (Kingdom of the)
- Portugal
- Sweden
- National, 7
- Australia
- Brazil
- Canada
- China
- Israel
- Japan
- Democratic People’s Republic of Korea