Difference between revisions of "Writer/ToDo/Writer Refactoring/SwDoc ViewShell SwRootFrm"

From Apache OpenOffice Wiki
< Writer‎ | ToDo
Jump to: navigation, search
m
m
Line 27: Line 27:
  
 
Moving the layout(SwRootFrm) from the model(SwDoc) to the view(ViewShell).
 
Moving the layout(SwRootFrm) from the model(SwDoc) to the view(ViewShell).
 +
 +
1. Step
 +
Move member pLayout (SwRootFrm*) from class SwDoc to class ViewShell.
 +
Move member pCurrShell (ViewShell*) from class SwRootFrm to class SwDoc.
 +
Move all other ViewShell related members from class SwRootFrm to class SwDoc.
 +
 +
2. Step
 +
Solve all problems resulting from 1. ;-)

Revision as of 14:34, 29 October 2007

Modularization: View Model

Writer refactoring

As a part of our Writer refactoring we are planning to change the dependencies between the Writer model and its views.

The Writer model contains all paragraphs, tables, drawing object etc. and their properties. It is represented in the class SwDoc.

The class ViewShell represents visualizations of this model, every window (e.g. the normal document view, the print preview, the online view) needs a ViewShell.

The class SwRootFrm is another part of the view, it contains the formatting information for the document objects. I.e. for every visible object (character, table, drawing object...) it contains the position and size. The ViewShell calls its Paint(..) function to display document content.

Today's structure

Today we have the following structure regarding SwDoc, ViewShell, SwRootFrm...

Each SwDoc has a member pLayout which points to a SwRootFrm. It has no direct connection to a ViewShell.

Every ViewShell has a member pDoc which points to a SwDoc. It has no direct connection to a SwRootFrm.
The ViewShells are organized as a Ring, i.e. ViewShells with the same SwDoc are connected via pPrev, pNext pointers.

Every SwRootFrm has a member pCurrShell which points to a ViewShell. It has no direct connection to the SwDoc.

Problem

The layout (SwRootFrm) is logically a part of the view, but currently hosted at the model (SwDoc). If there are several views to the model, they have to share one layout. This results in the effect that views with different layout are impossible, e.g two online views or a normal view and a online view.

Solution

Moving the layout(SwRootFrm) from the model(SwDoc) to the view(ViewShell).

1. Step

Move member pLayout (SwRootFrm*) from class SwDoc to class ViewShell.
Move member pCurrShell (ViewShell*) from class SwRootFrm to class SwDoc.
Move all other ViewShell related members from class SwRootFrm to class SwDoc.

2. Step

Solve all problems resulting from 1. ;-)
Personal tools