Ticket #1968: pwa-centering-Page-work-area-should-be-centered.patch

File pwa-centering-Page-work-area-should-be-centered.patch, 28.1 KB (added by tanya, 10 years ago)
  • modules/org.sophie2.main.app.halos/src/main/java/org/sophie2/main/app/halos/frame/rotate/FrameRotateHaloButton.java

    ### Eclipse Workspace Patch 1.0
    #P sophie
     
    4848                final FrameH frame = frameView.model().get(); 
    4949                final double oldAngle = frame.getRotationAngle(); 
    5050 
    51                 PageWorkArea pwa = AppHaloUtil.getWorkArea(this); 
     51                final PageWorkArea pwa = AppHaloUtil.getWorkArea(this); 
    5252                final Scene scene = pwa.scene().get(); 
    5353                final ImmMatrix sceneToParent = SceneHelper.getElementToSceneTransform(scene, 
    5454                                frameView.parent().get().sceneElement().get()).inverse(); 
     
    7575                        @Override 
    7676                        public void shouldMove(int newX, int newY) { 
    7777 
     78                                pwa.mouseCaptureOn().set(Boolean.TRUE); 
     79                                 
    7880                                ImmPoint newP = sceneToParent.transform(new ImmPoint(newX, newY)); 
    7981                                // offset in our space 
    8082                                ImmSize offset = newP.minus(zero); 
     
    9395                                // set the focus to the scene 
    9496                                sceneVisual.swingComponent().get().requestFocusInWindow(); 
    9597                                sceneVisual.swingComponent().get().requestFocus(); 
     98                                 
     99                                pwa.mouseCaptureOn().set(Boolean.FALSE); 
    96100                        } 
    97101 
    98102                        private void templatedRotation(final double newAngle,  
  • modules/org.sophie2.base.layout/src/test/java/org/sophie2/base/layout/model/LayoutDemo.java

     
     1package org.sophie2.base.layout.model; 
     2 
     3import java.awt.BorderLayout; 
     4 
     5import javax.swing.JDesktopPane; 
     6import javax.swing.JFrame; 
     7import javax.swing.JInternalFrame; 
     8import javax.swing.JLayeredPane; 
     9 
     10/** 
     11 * Demo for demonstrating the usage of {@link CustomLayout}. 
     12 * @author tanya 
     13 */ 
     14public class LayoutDemo { 
     15 
     16        /** 
     17         * Constructor that creates {@link JFrame}, adds a {@link JDesktopPane} with 
     18         * {@link CustomLayout} and set different layers to be with different 
     19         * layouts. 
     20         */ 
     21        public LayoutDemo() { 
     22                 
     23                JFrame frame = new JFrame(); 
     24                frame.setSize(300, 300); 
     25                frame.setVisible(true); 
     26                 
     27                JDesktopPane pane = new JDesktopPane(); 
     28                 
     29                frame.setContentPane(pane); 
     30                pane.setLayout(new CustomLayout(new BorderLayout())); 
     31                 
     32                JInternalFrame frame1 = new JInternalFrame(); 
     33                frame1.setLocation(10, 10); 
     34                frame1.setSize(90, 90); 
     35                frame1.setVisible(true); 
     36                 
     37                pane.setLayer(frame1, JLayeredPane.DEFAULT_LAYER); 
     38                 
     39                pane.add(frame1, BorderLayout.CENTER); 
     40                 
     41                JInternalFrame frame2 = new JInternalFrame(); 
     42                frame2.setLocation(110, 110); 
     43                frame2.setSize(90, 90); 
     44                frame2.setVisible(true); 
     45                 
     46                pane.setLayer(frame2, JLayeredPane.PALETTE_LAYER); 
     47                 
     48                pane.add(frame2, CustomLayout.CUSTOM); 
     49        } 
     50         
     51        /** 
     52         * The main method. 
     53         * @param args 
     54         */ 
     55        public static void main(String args[]) { 
     56                new LayoutDemo(); 
     57        } 
     58} 
     59 
  • modules/org.sophie2.extra.func.annotations/src/main/java/org/sophie2/extra/func/annotations/view/halos/StickyMoveHaloButton.java

     
    8383                        public void released() { 
    8484                                sv.wantedViewRect().set(null); 
    8585                                releaseAction(channel); 
    86  
     86                                workArea().get().mouseCaptureOn().set(Boolean.FALSE); 
    8787                        } 
    8888 
    8989                        @Override 
    9090                        public void shouldMove(final int newX, final int newY) { 
     91                                workArea().get().mouseCaptureOn().set(Boolean.TRUE); 
    9192                                moveAction(channel, newX, newY); 
    9293                        } 
    9394                }; 
  • modules/org.sophie2.base.scene/src/main/java/org/sophie2/base/scene/interfaces/Scene.java

     
    11package org.sophie2.base.scene.interfaces; 
    22 
    33import org.sophie2.base.commons.util.ImmColor; 
     4import org.sophie2.base.commons.util.position.ImmRect; 
    45import org.sophie2.base.scene.helpers.SceneHelper; 
    56import org.sophie2.core.prolib.impl.BaseProObject; 
    67import org.sophie2.core.prolib.interfaces.Prop; 
     
    3536         * @return property 
    3637         */ 
    3738        public abstract Prop<? extends SceneElement> rootElement(); 
     39         
     40        /** 
     41         * The rectangle over which the actual view rectangle will be centered. 
     42         *  
     43         * @return property 
     44         */ 
     45        public abstract Prop<ImmRect> centeringRect(); 
    3846 
    3947        /** 
    4048         * The background color of the scene. This is the infinite area that is 
  • modules/org.sophie2.base.scene/src/test/java/org/sophie2/base/scene/SceneDemo.java

     
    475475 
    476476                public RwProp<ImmRect> actualViewRectCache() {  
    477477                        return getBean().makeValueProp("actualViewRectCache", ImmRect.class, null);  
    478                 }  
     478                } 
     479 
     480                public RwProp<ImmPoint> translationPoint() { 
     481                        // TODO Auto-generated method stub 
     482                        return null; 
     483                } 
    479484        } 
    480485 
    481486        /** 
  • modules/org.sophie2.base.scene/src/main/java/org/sophie2/base/scene/BaseSceneVisual.java

     
    66import javax.swing.JComponent; 
    77 
    88import org.sophie2.base.commons.util.OSUtil; 
     9import org.sophie2.base.commons.util.position.ImmPoint; 
    910import org.sophie2.base.commons.util.position.ImmRect; 
     11import org.sophie2.base.commons.util.position.ImmSize; 
    1012import org.sophie2.base.dnd.SophieDragDropHandler; 
    1113import org.sophie2.base.scene.helpers.ElementHelper; 
    1214import org.sophie2.base.scene.helpers.SceneHelper; 
     
    164166        protected static final ImmRect DEFAULT_VIEW_RECT = 
    165167                new ImmRect(0, 0, 256, 256); 
    166168 
     169        public RwProp<ImmPoint> translationPoint() { 
     170                return getBean().makeValueProp("translationPoint", ImmPoint.class, ImmPoint.ZERO); 
     171        } 
     172         
    167173        public Prop<ImmRect> actualViewRect() { 
    168174                class actualViewRect extends AutoProperty<ImmRect> { 
    169175 
     
    177183                                                && scene().get().rootElement().get() != null) { 
    178184                                        ImmRect bound = SceneHelper.getBoundingRect(scene().get(), 
    179185                                                        scene().get().rootElement().get()); 
     186                                         
     187                                        res = bound; 
     188                                        ImmPoint oldLocation = res.getLocation(); 
     189                                         
     190                                        float before = Math.abs(res.getX()); 
     191                                        float after = res.getWidth() - scene().get().centeringRect().get().getWidth() - before; 
     192                                        float newWidth = Math.abs(after - before); 
     193 
     194                                        float top = Math.abs(res.getY()); 
     195                                        float bottom = res.getHeight() - scene().get().centeringRect().get().getHeight() - top; 
     196                                        float newHeight = Math.abs(top - bottom); 
     197                                         
     198                                        float locationX = 0f; 
     199                                        if(before < after) { 
     200                                                locationX = after - before; 
     201                                        } 
     202 
     203                                        float locationY = 0f; 
     204                                        if(top < bottom) { 
     205                                                locationY = bottom - top; 
     206                                        } 
     207 
     208                                         
     209                                        ImmPoint newLocation = new ImmPoint(oldLocation.getX() - locationX , 
     210                                                        oldLocation.getY() - locationY); 
     211 
     212                                        res = new ImmRect(newLocation, new ImmSize(res.getWidth() + newWidth, res.getHeight() + newHeight)); 
     213 
    180214                                        res = new ImmRect( 
    181                                                         bound.getX() - DEFAULT_PADDING_L,  
    182                                                         bound.getY() - DEFAULT_PADDING_T,  
    183                                                         bound.getWidth() + DEFAULT_PADDING_R + DEFAULT_PADDING_L,  
    184                                                         bound.getHeight() + DEFAULT_PADDING_B + DEFAULT_PADDING_T); 
     215                                        res.getX() - DEFAULT_PADDING_L,  
     216                                        res.getY() - DEFAULT_PADDING_T,  
     217                                        res.getWidth() + DEFAULT_PADDING_R + DEFAULT_PADDING_L,  
     218                                        res.getHeight() + DEFAULT_PADDING_B + DEFAULT_PADDING_T); 
    185219                                } else { 
    186220                                        // can not determine... 
    187221                                        // just make something... 
  • modules/org.sophie2.base.scene/src/main/java/org/sophie2/base/scene/helpers/SceneHelper.java

     
    253253                SophieLog.trace("sceneToSwing: viewRect=" + viewRect); 
    254254                ImmRect res = Position.translate(sceneRect, -viewRect.getX(), -viewRect 
    255255                                .getY()); 
     256                 
     257                res = res.translate(-visual.translationPoint().get().getX(), -visual.translationPoint().get().getY()); 
    256258                SophieLog.trace("sceneToSwing: res= " + res); 
    257259                return res; 
    258260 
     
    275277                assert viewRect != null; 
    276278                SophieLog.trace("sceneToSwing: viewRect=" + viewRect); 
    277279                ImmPoint res = scenePoint.translate(-viewRect.getX(), -viewRect.getY()); 
     280                 
     281                res = res.translate(-visual.translationPoint().get().getX(), -visual.translationPoint().get().getY()); 
     282 
    278283                SophieLog.trace("sceneToSwing: res= " + res); 
    279284                return res; 
    280285 
     
    292297        public static ImmRect swingToScene(SceneVisual visual, ImmRect swingRect) { 
    293298                // only translation... 
    294299                ImmRect viewRect = visual.actualViewRect().get(); 
    295                 return Position.translate(swingRect, viewRect.getX(), viewRect.getY()); 
     300                return Position.translate(swingRect, viewRect.getX(), viewRect.getY()) 
     301                        .translate(visual.translationPoint().get().getX(), visual.translationPoint().get().getY()); 
    296302        } 
    297303 
    298304        /** 
     
    308314                // only translation... 
    309315                ImmRect viewRect = visual.actualViewRect().get(); 
    310316                assert viewRect != null; 
    311                 return swingPoint.translate(viewRect.getX(), viewRect.getY()); 
     317                return swingPoint.translate(viewRect.getX(), viewRect.getY()) 
     318                        .translate(visual.translationPoint().get().getX(), visual.translationPoint().get().getY()); 
    312319        } 
    313320 
    314321        /** 
  • modules/org.sophie2.base.layout/src/main/java/org/sophie2/base/layout/model/CustomLayout.java

     
     1package org.sophie2.base.layout.model; 
     2 
     3import java.awt.BorderLayout; 
     4import java.awt.Component; 
     5import java.awt.Container; 
     6import java.awt.Dimension; 
     7import java.awt.LayoutManager2; 
     8 
     9import javax.swing.JDesktopPane; 
     10import javax.swing.JLayeredPane; 
     11 
     12/** 
     13 * LayoutManager that support adding of components with different layouts - null 
     14 * and some specific layout. An object is created with a specific 
     15 * {@link LayoutManager2}. When different components are added, they can be with 
     16 * constraint - CustomLayout.CUSTOM. This means that for layouting of these 
     17 * components will be used null layout. For all other components added, it will 
     18 * be used the given layout manager. This layout manager can be used for example 
     19 * for {@link JDesktopPane}. For example, components at 
     20 * {@link JLayeredPane#DEFAULT_LAYER} can be with {@link BorderLayout} and the 
     21 * components at {@link JLayeredPane#PALETTE_LAYER} to be with null layout. 
     22 *  
     23 * @author tanya 
     24 */ 
     25public class CustomLayout implements LayoutManager2,java.io.Serializable { 
     26 
     27        /** 
     28         * Used for serialization. 
     29         */ 
     30        private static final long serialVersionUID = 810513263396699528L; 
     31 
     32        private LayoutManager2 layoutManager; 
     33         
     34        /** 
     35         * The constraint for the objects which we want to be with null layout. 
     36         */ 
     37        public static final String CUSTOM   = "Custom"; 
     38         
     39        /** 
     40         * Constructs an object with another layout manager. The components added 
     41         * will be with null layout or will be added according 
     42         *  
     43         * @param manager 
     44         *            The manager which will be responsible for how the components 
     45         *            will be added and how will be layouted. 
     46         */ 
     47        public CustomLayout(LayoutManager2 manager) { 
     48                this.layoutManager = manager; 
     49        } 
     50         
     51        public void addLayoutComponent(Component comp, Object constraints) { 
     52                if (constraints != CUSTOM) { 
     53                        this.layoutManager.addLayoutComponent(comp, constraints); 
     54                } 
     55        } 
     56 
     57        public float getLayoutAlignmentX(Container target) { 
     58                return this.layoutManager.getLayoutAlignmentX(target); 
     59        } 
     60 
     61        public float getLayoutAlignmentY(Container target) { 
     62                return this.layoutManager.getLayoutAlignmentY(target); 
     63        } 
     64 
     65        public void invalidateLayout(Container target) { 
     66                this.layoutManager.invalidateLayout(target); 
     67        } 
     68 
     69        public Dimension maximumLayoutSize(Container target) { 
     70                return this.layoutManager.maximumLayoutSize(target); 
     71        } 
     72 
     73        public void addLayoutComponent(String name, Component comp) { 
     74                this.layoutManager.addLayoutComponent(name, comp); 
     75        } 
     76 
     77        public void layoutContainer(Container parent) { 
     78                this.layoutManager.layoutContainer(parent); 
     79        } 
     80 
     81        public Dimension minimumLayoutSize(Container parent) { 
     82                return this.layoutManager.minimumLayoutSize(parent); 
     83        } 
     84 
     85        public Dimension preferredLayoutSize(Container parent) { 
     86                return this.layoutManager.preferredLayoutSize(parent); 
     87        } 
     88 
     89        public void removeLayoutComponent(Component comp) { 
     90                this.layoutManager.removeLayoutComponent(comp); 
     91        } 
     92} 
     93 No newline at end of file 
  • modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/page/PageWorkArea.java

     
    11package org.sophie2.main.app.commons.page; 
    22 
     3import java.awt.BorderLayout; 
    34import java.util.ArrayList; 
    45import java.util.List; 
    56 
     
    1011import org.sophie2.base.commons.util.ImmColor; 
    1112import org.sophie2.base.commons.util.position.ImmArea; 
    1213import org.sophie2.base.commons.util.position.ImmMatrix; 
     14import org.sophie2.base.commons.util.position.ImmPoint; 
    1315import org.sophie2.base.commons.util.position.ImmRect; 
     16import org.sophie2.base.commons.util.position.ImmSize; 
     17import org.sophie2.base.layout.model.CustomLayout; 
    1418import org.sophie2.base.model.book.PageH; 
    1519import org.sophie2.base.scene.SceneVisual; 
    1620import org.sophie2.base.scene.effects.ColorEffect; 
     
    157161                                        @Override 
    158162                                        protected void setupScene() { 
    159163                                                rootElement().set(rootSceneElement().get()); 
     164                                                 
     165                                                ImmPoint pageLocation = new ImmPoint(0, 0); 
     166                                                ImmSize pageSize = bookView().get().model().get().getPageSize(); 
     167                                                 
     168                                                ImmRect centeringRect = new ImmRect(pageLocation, pageSize); 
     169                                                 
     170                                                centeringRect().set(centeringRect); 
    160171                                                topEventSource().set(PageWorkArea.this); 
    161172                                        } 
    162173                                }; 
     
    208219                        @Override 
    209220                        protected void setup(JDesktopPane res) { 
    210221                         
     222                                res.setLayout(new CustomLayout(new BorderLayout())); 
     223                                 
    211224                                JComponent sceneComp = sceneVisual().get().swingComponent().get(); 
    212225 
    213226                                sceneComp.setLocation(0, 0); 
    214227                                SophieLog.debug("PageWorkArea.layeredPage: sceneComp:" + sceneComp); 
    215228 
    216229                                res.removeAll(); 
    217                                 res.add(sceneComp, JLayeredPane.DEFAULT_LAYER); 
     230                                res.setLayer(sceneComp, JLayeredPane.DEFAULT_LAYER); 
     231                                 
     232                                res.add(sceneComp, BorderLayout.CENTER); 
    218233 
    219234                                res.revalidate(); 
    220235                                res.repaint(); 
     
    226241                        protected void setupActualSize(JLayeredPane res) { 
    227242 
    228243                                // grab the value to set up the property sync 
    229                                 ImmRect actualCache = sceneVisual().get().actualViewRect().get(); 
     244//                              ImmRect actualCache = sceneVisual().get().actualViewRect().get(); 
    230245 
    231246                                JDesktopPane desktopPane = swingComponent().get(); 
    232247                                desktopPane.revalidate(); 
     
    427442                } 
    428443                return getBean().makeProp(selectionRisenElement.class); 
    429444        } 
     445         
     446        /** 
     447         * Property which have True or False value depending on whether mouse capture event is started or not. 
     448         * <b>true</b> if mouse capture is on, <b>false</b> otherwise. 
     449         *  
     450         * @return property 
     451         */ 
     452        public RwProp<Boolean> mouseCaptureOn() { 
     453                return getBean().makeValueProp("mouseCaptureOn", Boolean.class, Boolean.FALSE);  
     454        } 
    430455} 
     456 No newline at end of file 
  • modules/org.sophie2.main.app.halos/src/main/java/org/sophie2/main/app/halos/page/resize/PageResizeHaloButton.java

     
    4949 
    5050        @Override 
    5151        protected MouseCapture captureClick(MouseEvent e) { 
    52                 PageWorkArea pwa = AppHaloUtil.getWorkArea(PageResizeHaloButton.this); 
     52                final PageWorkArea pwa = AppHaloUtil.getWorkArea(PageResizeHaloButton.this); 
    5353 
    5454                if(pwa !=null ){ 
    5555 
     
    7070                                public void released() { 
    7171                                        sv.wantedViewRect().set(null); 
    7272 
     73                                        pwa.mouseCaptureOn().set(Boolean.TRUE); 
    7374 
    7475                                        new AutoAction("Set page size", true) { 
    7576 
     
    8384                                @Override 
    8485                                public void shouldMove(final int newX, final int newY) { 
    8586 
     87                                        pwa.mouseCaptureOn().set(Boolean.TRUE); 
     88                                         
    8689                                        if (newX <= 0 || newY <= 0) { 
    8790                                                return; 
    8891                                        } 
  • modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/page/ScenePageLogic.java

     
    134134                                @Override 
    135135                                public void released() { 
    136136                                        pwa.selectionArea().set(ImmArea.EMPTY); 
     137                                         
     138                                        pwa.mouseCaptureOn().set(Boolean.FALSE); 
    137139                                } 
    138140 
    139141                                @Override 
    140142                                public void shouldMove(int newX, int newY) { 
     143                                         
     144                                        pwa.mouseCaptureOn().set(Boolean.TRUE); 
     145                                         
    141146                                        ImmPoint endPoint = transf.transform(new ImmPoint(newX, newY)); 
    142147 
    143148                                        float x = Math.min(startPoint.getX(), endPoint.getX()); 
  • modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/app/AppMainWindow.java

     
    1515import org.sophie2.base.halos.HaloMenu; 
    1616import org.sophie2.base.halos.HudDialog; 
    1717import org.sophie2.base.layout.impl.DefaultMainWindow; 
     18import org.sophie2.base.layout.model.CustomLayout; 
    1819import org.sophie2.base.layout.model.DocView; 
    1920import org.sophie2.base.media.MediaComposite; 
    2021import org.sophie2.base.media.MediaUtil; 
     
    212213                                        if (hm.visible().get()) { 
    213214                                                for (JComponent c : hm.swingComponents().get()) { 
    214215                                                         
    215                                                         res.add(c, JLayeredPane.PALETTE_LAYER); 
     216                                                        res.setLayer(c, JLayeredPane.PALETTE_LAYER); 
     217                                                        res.add(c, CustomLayout.CUSTOM); 
     218                                                         
    216219                                                } 
    217220                                        } 
    218221                                } 
     
    236239                                } 
    237240                                PageWorkArea workArea = bookDocView.workArea().get(); 
    238241                                 
    239                                 JDesktopPane res = workArea.swingComponent().get();  
    240                                  
    241                                 // The scene bounds 
    242                                 ImmRect bounds = workArea.sceneVisual().get().actualViewRect().get(); 
    243                                 // The bounds of visible huds 
    244                                 for (HaloMenu hm : haloMenus().get()) { 
    245                                          
    246                                         if (hm.visible().get()) { 
    247                                                  
    248                                                 bounds = bounds.union(SceneHelper.swingToScene( 
    249                                                                 workArea.sceneVisual().get(), hm.bounds().get())); 
    250                                                  
    251                                                 for (HudDialog hud = hm.activeHud().get();  
    252                                                                         hud!=null && hud.visible().get(); hud = hud.subHud().get()) { 
    253                                                          
    254                                                         ImmRect hudBounds = new ImmRect(hud.location().get(), hud.size().get()); 
    255                                                          
     242                                if (!workArea.mouseCaptureOn().get()) { 
     243 
     244                                        JDesktopPane res = workArea.swingComponent().get();  
     245 
     246                                        // The scene bounds 
     247                                        ImmRect bounds = workArea.sceneVisual().get().actualViewRect().get(); 
     248                                        // The bounds of visible huds 
     249                                        for (HaloMenu hm : haloMenus().get()) { 
     250 
     251                                                if (hm.visible().get()) { 
     252 
    256253                                                        bounds = bounds.union(SceneHelper.swingToScene( 
    257                                                                         workArea.sceneVisual().get(), hudBounds)); 
     254                                                                        workArea.sceneVisual().get(), hm.bounds().get())); 
     255 
     256                                                        for (HudDialog hud = hm.activeHud().get();  
     257                                                        hud!=null && hud.visible().get(); hud = hud.subHud().get()) { 
     258 
     259                                                                ImmRect hudBounds = new ImmRect(hud.location().get(), hud.size().get()); 
     260 
     261                                                                bounds = bounds.union(SceneHelper.swingToScene( 
     262                                                                                workArea.sceneVisual().get(), hudBounds)); 
     263                                                        } 
    258264                                                } 
    259265                                        } 
    260                                 } 
    261266 
    262                                 bounds = SceneHelper.sceneToSwing(workArea.sceneVisual().get(), bounds); 
    263                                 Dimension d = bounds.getSize().toDimension(); 
     267                                        bounds = SceneHelper.sceneToSwing(workArea.sceneVisual().get(), bounds); 
     268                                        Dimension d = bounds.getSize().toDimension(); 
    264269 
    265                                 res.setPreferredSize(d); 
    266                                 res.setSize(d); 
    267                                 res.revalidate(); 
     270                                        res.setPreferredSize(d); 
     271                                        res.setSize(d); 
     272                                        res.revalidate(); 
     273                                } 
    268274                        } 
    269275                         
    270276                } 
  • modules/org.sophie2.base.scene/src/main/java/org/sophie2/base/scene/impl/BaseScene.java

     
    11package org.sophie2.base.scene.impl; 
    22 
    33import org.sophie2.base.commons.util.ImmColor; 
     4import org.sophie2.base.commons.util.position.ImmRect; 
    45import org.sophie2.base.scene.interfaces.Scene; 
    56import org.sophie2.base.scene.interfaces.SceneElement; 
    67import org.sophie2.core.prolib.impl.ResourceProperty; 
     
    2021        } 
    2122 
    2223        @Override 
     24        public RwProp<ImmRect> centeringRect() { 
     25                return getBean().makeValueProp("centeringRect", ImmRect.class, ImmRect.ZERO_RECT); 
     26        } 
     27         
     28        @Override 
    2329        public RwProp<ImmColor> backgroundColor() { 
    2430                return getBean().makeValueProp("backgroundColor", ImmColor.class, 
    2531                                ImmColor.GRAY); 
  • modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/frame/FrameLogic.java

     
    5555                        final ElementView elementView = event.getSource(ElementView.class); 
    5656                        final ResourceAccess access = elementView.getAccess(); 
    5757                 
    58                         PageWorkArea pwa = elementView.getPwa(); 
     58                        final PageWorkArea pwa = elementView.getPwa(); 
    5959                        Mode sizeTemplateMode = ResizableElement.KEY_SIZE.getMode(access); 
    6060                        Mode locTemplateMode = MemberElement.KEY_LOCATION.getMode(access); 
    6161 
     
    102102                                @Override 
    103103                                public void released() { 
    104104                                        doResize(channel); 
     105                                        pwa.mouseCaptureOn().set(Boolean.TRUE); 
    105106                                        sv.wantedViewRect().set(null); 
    106107                                } 
    107108 
     
    124125                                @Override 
    125126                                public void shouldMove(int newX, int newY) { 
    126127 
     128                                        pwa.mouseCaptureOn().set(Boolean.TRUE); 
     129                                         
    127130                                        ImmVector v0InFr = frameToScene.inverseTransform(new ImmVector(0, 0)); 
    128131                                        ImmVector v = new ImmVector(newX, newY); 
    129132                                        ImmVector vInFrame = frameToScene.inverseTransform(v); 
  • modules/org.sophie2.main.scene.simple/src/main/java/org/sophie2/main/scene/simple/SimpleSceneVisual.java

     
    66import javax.swing.JComponent; 
    77import javax.swing.JPanel; 
    88 
     9import org.sophie2.base.commons.util.position.ImmPoint; 
    910import org.sophie2.base.commons.util.position.ImmRect; 
     11import org.sophie2.base.commons.util.position.ImmSize; 
    1012import org.sophie2.base.scene.BaseSceneVisual; 
    1113import org.sophie2.base.scene.SceneVisual; 
    1214import org.sophie2.base.scene.helpers.SceneHelper; 
     
    5557                        Graphics2D g2d = (Graphics2D) graphics.create(); 
    5658                        ImmRect visRect = actualViewRect().get(); 
    5759 
    58                         SceneHelper.paint(g2d, visRect, scene().get()); 
     60                        //Centering the actual view rectangle. 
     61                        int w = this.getWidth(); 
     62                        int h = this.getHeight(); 
     63 
     64                        float tx = (w - visRect.getWidth())/2; 
     65                        float ty = (h - visRect.getHeight())/2;   
     66 
     67                         
     68                        ImmPoint point = new ImmPoint(-tx, -ty); 
     69                        translationPoint().set(point); 
     70                         
     71                        ImmPoint oldLocation = visRect.getLocation(); 
     72                        ImmPoint newLocation = new ImmPoint(oldLocation.getX() - tx , oldLocation.getY() - ty); 
    5973 
     74                        visRect = new ImmRect(newLocation, new ImmSize(w, h)); 
     75                         
     76                        SceneHelper.paint(g2d, visRect, scene().get()); 
     77                         
    6078                        SophieLog.debug("paintComponent: total paint time=" 
    6179                                        + (System.currentTimeMillis() - startTime)); 
    6280                } 
  • modules/org.sophie2.dev/src/main/java/org/sophie2/dev/author/FakeAuthorMain.java

     
    107107                //SophieLog.setMinLevel("org.sophie2.main.func.timelines", LogLevel.DEBUG); 
    108108                //SophieLog.setMinLevel("org.sophie2.main.func.media.view", LogLevel.ALL); 
    109109                //SophieLog.setMinLevel("org.sophie2.base.bound", LogLevel.ALL); 
    110                 SophieLog.setMinLevel("org.sophie2.main.scene.simple", LogLevel.NONE); 
     110                SophieLog.setMinLevel("org.sophie2.main.scene.simple", LogLevel.WARN); 
    111111                SophieLog.setMinLevel("org.sophie2.main.func.media.logic", LogLevel.DEBUG); 
    112112                 
    113113                assert System.getProperty(SophieEditions.PROP_ID) == null : 
  • modules/org.sophie2.base.scene/src/main/java/org/sophie2/base/scene/SceneVisual.java

     
    22 
    33import javax.swing.JComponent; 
    44 
     5import org.sophie2.base.commons.util.position.ImmPoint; 
    56import org.sophie2.base.commons.util.position.ImmRect; 
    67import org.sophie2.base.scene.interfaces.Scene; 
    78import org.sophie2.base.visual.VisualElement; 
     
    7374         * @return property 
    7475         */ 
    7576        Prop<ImmRect> actualViewRect(); 
     77         
     78        /** 
     79         * Returns with what distance by x-coordinate and y-coordinate should visual 
     80         * component be translated. Used with halos when the actual view rectangle is centered. 
     81         *  
     82         * @return property 
     83         */ 
     84        public RwProp<ImmPoint> translationPoint(); 
    7685} 
  • modules/org.sophie2.main.app.halos/src/main/java/org/sophie2/main/app/halos/frame/MainTitleBarHalo.java

     
    344344                        public void released() { 
    345345                                sv.wantedViewRect().set(null); 
    346346                                releasedAction(finalOldLocations, finalFrameRefs, finalTimes); 
     347                                workArea().get().mouseCaptureOn().set(Boolean.FALSE); 
    347348                        } 
    348349 
    349350                        @Override 
    350351                        public void shouldMove(final int newX, final int newY) { 
     352                                workArea().get().mouseCaptureOn().set(Boolean.TRUE); 
    351353                                moveAction(finalOldLocations, finalFrameRefs, finalTimes, newX, newY); 
    352354 
    353355                        }