Ticket #2311: page_reordering_visualization.patch

File page_reordering_visualization.patch, 20.7 KB (added by tanya, 15 years ago)
  • src/main/resources/lookandfeel_java6.xml

    ### Eclipse Workspace Patch 1.0
    #P org.sophie2.main.skin.alternative
     
    19101910        </style> 
    19111911        <bind style="pagePreviewThumbSelected" type="name" 
    19121912                key="main.view.layout.pages.page-preview-palette/pagePreviewThumbHolderSelected" /> 
     1913                 
     1914        <!-- ================================= --> 
     1915        <!-- PAGE PREVIEW THUMB OVER  --> 
     1916        <!-- ================================= --> 
     1917        <style id="thumbnailDragOver"> 
     1918                <insets top="0" left="0" bottom="0" right="0" /> 
     1919                <state value="ENABLED"> 
     1920                        <imagePainter method="PanelBackground" 
     1921                                path="/resources/PagePreviewPalette/page_preview_thumb_over_separator.png" 
     1922                                sourceInsets="-100 0 -100 0" /> 
     1923                </state> 
     1924        </style> 
     1925        <bind style="thumbnailDragOver" type="name" 
     1926                key="main.view.layout.pages.page-preview-palette/thumbnailDragOver" /> 
    19131927 
    19141928        <!-- ================================= --> 
    19151929        <!-- PAGE PREVIEW PALETTE LIST   --> 
  • src/main/resources/lookandfeel_java5.xml

     
    19091909        <bind style="pagePreviewThumbSelected" type="name" key="main.view.layout.pages.page-preview-palette/pagePreviewThumbHolderSelected" /> 
    19101910         
    19111911        <!-- ================================= --> 
     1912        <!-- PAGE PREVIEW THUMB OVER  --> 
     1913        <!-- ================================= --> 
     1914        <style id="thumbnailDragOver"> 
     1915                <insets top="0" left="0" bottom="0" right="0" /> 
     1916                <state value="ENABLED"> 
     1917                        <imagePainter method="PanelBackground" 
     1918                                path="/resources/PagePreviewPalette/page_preview_thumb_over_separator.png" 
     1919                                sourceInsets="-100 0 -100 0" /> 
     1920                </state> 
     1921        </style> 
     1922        <bind style="thumbnailDragOver" type="name" 
     1923                key="main.view.layout.pages.page-preview-palette/thumbnailDragOver" />   
     1924         
     1925        <!-- ================================= --> 
    19121926        <!-- PAGE PREVIEW PALETTE LIST   --> 
    19131927        <!-- ================================= --> 
    19141928        <style id="pagePreviewPaletteList"> 
  • src/main/java/org/sophie2/main/app/layout/left/pages/PagePreviewPaletteLogic.java

    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: src/main/resources/resources/PagePreviewPalette/page_preview_thumb_over_separator.png
    ___________________________________________________________________
    Added: svn:mime-type
       + application/octet-stream
    
    #P org.sophie2.main.app.layout
     
    11package org.sophie2.main.app.layout.left.pages; 
    22 
     3import java.awt.Point; 
    34import java.awt.Rectangle; 
    45 
     6import javax.swing.JList; 
     7 
     8import org.sophie2.base.commons.util.ImmList; 
    59import org.sophie2.base.commons.util.position.ImmArea; 
    610import org.sophie2.base.commons.util.position.ImmPoint; 
    711import org.sophie2.base.commons.util.position.ImmRect; 
     
    1216import org.sophie2.base.dnd.SophieDragDropHandler.DndExport; 
    1317import org.sophie2.base.dnd.SophieDragDropHandler.DndPreImport; 
    1418import org.sophie2.base.layout.model.ListPalette; 
     19import org.sophie2.base.layout.model.ListPaletteItem; 
    1520import org.sophie2.base.model.book.BookH; 
    1621import org.sophie2.base.model.resources.r4.ResourceRefR4; 
    1722import org.sophie2.base.model.resources.r4.resources.ResourceH; 
     
    150155        }, 
    151156         
    152157        /** 
    153          * Handles pre-importing template data in drag'n'drop operation. 
     158         * Handles dropping a page template over the {@link PagePreviewPalette}. 
     159         * Applies the template to the page over which it was dropped or creates a new page 
     160         * if it was dropped over the blank space between page items. 
    154161         */ 
    155162        ON_DND_PRE_IMPORT_TEMPLATE { 
    156163                 
     
    169176                } 
    170177 
    171178                public boolean handle(EventR3 event) { 
    172   
     179                         
    173180                        PagePreviewPalette palette = event.getSource(PagePreviewPalette.class); 
    174181                        BookView bookView = AppViewUtil.getCurrentBookView(palette); 
    175182                        if (bookView.getViewOptions().isPreviewMode()) { 
     
    238245        /** 
    239246         * Handles pre-importing a page in a drag'n'drop operation. 
    240247         */ 
    241         ON_DND_PRE_IMPORT_PAGE { 
     248        ON_DND_PAGE_REORDER { 
    242249 
    243250                public void defineFilter(EventFilterBuilder filter) { 
    244251                        filter.setSourceClass(PagePreviewPalette.class); 
     
    262269                                        ImmPoint.class); 
    263270                         
    264271                        PagePreviewPalette palette = event.getSource(PagePreviewPalette.class); 
    265                         final int dropIndex = palette.mainComponent().get().locationToIndex(point.toPoint()); 
     272                        int dropIndex = palette.mainComponent().get().locationToIndex(point.toPoint()); 
    266273                         
    267274                        BookH book = AppViewUtil.getCurrentBook(palette); 
    268275                        final int dragIndex = book.getIndexOf(data.getResourceRef()); 
     
    271278                                return false; 
    272279                        } 
    273280                         
    274                         RootPageView pageView = palette.items().get().get(dropIndex).pageView().get(); 
     281                         
     282                        JList list = palette.mainComponent().get(); 
     283                         
     284                        Point dropPoint = point.toPoint(); 
     285                        Rectangle dropRect = list.getCellBounds(dropIndex, dropIndex); 
     286                         
     287                        double dropPos = dropPoint.getY(); 
     288                        double rectBegin = dropRect.getY(); 
     289                        double rectEnd = dropRect.getY() + dropRect.getHeight(); 
     290                         
     291                        if (rectEnd - dropPos < dropPos - rectBegin) { 
     292                                dropIndex++; 
     293                        } 
     294                         
     295                        ImmList<PageItem> items = palette.items().get(); 
     296                         
     297                        PageItem dropItem = null; 
     298                        if(dropIndex < items.size()) { 
     299                                dropItem = items.get(dropIndex); 
     300                        } 
     301 
     302                        for (ListPaletteItem listItem : items) { 
     303                                PageItem item = (PageItem) listItem; 
     304 
     305                                item.setSkinIcon("/thumbnailHolder", false); 
     306                                 
     307                                if (dropItem != null && dropItem.equals(item)) { 
     308                                        item.setSkinIcon("/thumbnailDragOver", true); 
     309                                } else { 
     310                                        item.setSkinIcon("/thumbnailHolder", true); 
     311                                } 
     312                        } 
     313                         
     314                        if(dropItem == null) { 
     315                                PageItem i = items.get(items.size() - 1); 
     316                                i.setSkinIcon("/thumbnailDragOver", false); 
     317                        } 
     318                         
     319                        palette.mainComponent().get().validate(); 
     320                        palette.mainComponent().get().repaint(); 
     321                         
     322 
     323                        if (dragIndex < dropIndex) { 
     324                                dropIndex--; 
     325                        } 
     326                         
     327                        RootPageView pageView = items.get(dropIndex).pageView().get(); 
    275328                        PageReorderHandler handler = PageReorderHandler.get(); 
    276329                        handler.setView(pageView); 
    277330                        preImport.setHandler(handler); 
  • src/main/java/org/sophie2/main/app/layout/left/pages/PagePreviewPaletteCellRenderer.java

     
    1 package org.sophie2.main.app.layout.left.pages; 
    2  
    3 import java.awt.Color; 
    4 import java.awt.Component; 
    5 import java.awt.Graphics; 
    6 import java.awt.Rectangle; 
    7  
    8 import javax.swing.BorderFactory; 
    9 import javax.swing.DefaultListCellRenderer; 
    10 import javax.swing.JList; 
    11 import javax.swing.JPanel; 
    12  
    13 import org.sophie2.base.commons.util.position.ImmPoint; 
    14 import org.sophie2.base.commons.util.position.ImmSize; 
    15 import org.sophie2.base.commons.util.position.Position; 
    16 import org.sophie2.base.media.TimePos; 
    17 import org.sophie2.base.model.book.ElementH; 
    18 import org.sophie2.base.model.book.frame.BoundMode; 
    19 import org.sophie2.base.model.book.resource.r4.BookR4; 
    20 import org.sophie2.base.model.resources.r4.ResourceRefR4; 
    21 import org.sophie2.main.app.commons.page.RootPageView; 
    22  
    23 /** 
    24  * A cell renderer for custom page previewing. 
    25  */ 
    26 public class PagePreviewPaletteCellRenderer extends DefaultListCellRenderer { 
    27         private PagePreviewPalette pagePreviewPalette; 
    28  
    29         /** 
    30          * Required for serialization. 
    31          */ 
    32         private static final long serialVersionUID = 3264356435643L; 
    33  
    34         /** 
    35          * Custom JPanel for drawing the page preview. 
    36          */ 
    37         private static class PageThumbnail extends JPanel { 
    38                 /** 
    39                  * Required for serialization. 
    40                  */ 
    41                 private static final long serialVersionUID = 1744645767234L; 
    42  
    43                 /** 
    44                  * The page view. 
    45                  */ 
    46                 private final RootPageView page; 
    47  
    48                 /** 
    49                  * Homothety factor for the coordinates. 
    50                  */ 
    51                 private final double k; 
    52  
    53                 /** 
    54                  * Constructor. 
    55                  *  
    56                  * @param pageView 
    57                  *            The page view. 
    58                  * @param k 
    59                  *            Homothety factor for the coordinates. 
    60                  */ 
    61                 public PageThumbnail(final RootPageView pageView, final double k) { 
    62                         this.page = pageView; 
    63                         this.k = k; 
    64                 } 
    65  
    66                 /** 
    67                  * Override of the paint method, which takes cares for drawing the 
    68                  * frames. 
    69                  */ 
    70                 @Override 
    71                 public void paint(final Graphics g) { 
    72                         super.paint(g); 
    73  
    74                         for (ElementH element : this.page.model().get().getChildElements(this.page.getTime())) { 
    75                                  
    76                                 ResourceRefR4 pageToElementRef = this.page.model().get().getChildRef(element); 
    77                                  
    78                                 TimePos localTime =  
    79                                         this.page.model().get().getSubTime(pageToElementRef, this.page.getTime()); 
    80                                  
    81                                 ImmPoint location = element.getLocation(BoundMode.CONTENT, Position.TOP_LEFT, localTime); 
    82                                 ImmSize size = element.getWrapSize(); 
    83  
    84                                 final Rectangle frameRect =  new Rectangle( 
    85                                                 location.toPoint(), size.toDimension()); 
    86                                 final int x = (int) (frameRect.x * this.k); 
    87                                 final int y = (int) (frameRect.y * this.k); 
    88                                 final int width = (int) (frameRect.width * this.k); 
    89                                 final int height = (int) (frameRect.height * this.k); 
    90  
    91                                 g.setColor(Color.BLACK); 
    92                                 g.drawRect(x, y, width, height); 
    93                         } 
    94                 } 
    95         } 
    96  
    97         /** 
    98          * Constructs {@link PagePreviewPaletteCellRenderer} from given 
    99          * {@link PagePreviewPalette}. 
    100          *  
    101          * @param pagePreviewPalette 
    102          *            the {@link PagePreviewPalette} 
    103          */ 
    104         public PagePreviewPaletteCellRenderer(PagePreviewPalette pagePreviewPalette) { 
    105                 super(); 
    106  
    107                 this.pagePreviewPalette = pagePreviewPalette; 
    108         } 
    109  
    110         @Override 
    111         public Component getListCellRendererComponent(final JList list, 
    112                         final Object value, final int index, final boolean isSelected, 
    113                         final boolean cellHasFocus) { 
    114  
    115                 final int newWidth = list.getWidth(); 
    116  
    117                 final PagePreviewPalette.PageItem pageItem = (PagePreviewPalette.PageItem) value; 
    118                 // TODO (R4) Reimplement: 
    119                 //Dimension pageDim =  pageItem.pageView().get().getboundingRectangle().get().getSize().toDimension(); 
    120                 final int pageWidth = (int) BookR4.DEFAULT_PAGE_SIZE.getWidth(); 
    121                 final int pageHeight = (int) BookR4.DEFAULT_PAGE_SIZE.getHeight(); 
    122                 final double k = (double) pageHeight / (double) pageWidth; 
    123                 final int newHeight = (int) (k * newWidth); 
    124  
    125                 list.setFixedCellHeight(newHeight); 
    126  
    127                 final double coef = newWidth 
    128                                 / pageWidth; 
    129                 PageThumbnail pageThumbnail = new PageThumbnail(pageItem.pageView().get(), 
    130                                 coef); 
    131  
    132                 if (isSelected) { 
    133                         pageThumbnail.setBorder(BorderFactory.createCompoundBorder( 
    134                                         BorderFactory.createLineBorder(Color.red, 2), BorderFactory 
    135                                                         .createLoweredBevelBorder())); 
    136                 } else if (index == this.pagePreviewPalette.getDropIndex()) { 
    137                         pageThumbnail.setBorder(BorderFactory.createCompoundBorder( 
    138                                         BorderFactory.createLineBorder(Color.yellow, 2), 
    139                                         BorderFactory.createLoweredBevelBorder())); 
    140                 } else { 
    141                         pageThumbnail.setBorder(BorderFactory.createCompoundBorder( 
    142                                         BorderFactory.createRaisedBevelBorder(), BorderFactory 
    143                                                         .createLoweredBevelBorder())); 
    144                 } 
    145  
    146                 return pageThumbnail; 
    147         } 
    148 } 
     1//package org.sophie2.main.app.layout.left.pages; 
     2// 
     3//import java.awt.Color; 
     4//import java.awt.Component; 
     5//import java.awt.Graphics; 
     6//import java.awt.Rectangle; 
     7// 
     8//import javax.swing.BorderFactory; 
     9//import javax.swing.DefaultListCellRenderer; 
     10//import javax.swing.JList; 
     11//import javax.swing.JPanel; 
     12// 
     13//import org.sophie2.base.commons.util.position.ImmPoint; 
     14//import org.sophie2.base.commons.util.position.ImmSize; 
     15//import org.sophie2.base.commons.util.position.Position; 
     16//import org.sophie2.base.media.TimePos; 
     17//import org.sophie2.base.model.book.ElementH; 
     18//import org.sophie2.base.model.book.frame.BoundMode; 
     19//import org.sophie2.base.model.book.resource.r4.BookR4; 
     20//import org.sophie2.base.model.resources.r4.ResourceRefR4; 
     21//import org.sophie2.main.app.commons.page.RootPageView; 
     22// 
     23///** 
     24// * A cell renderer for custom page previewing. 
     25// */ 
     26//public class PagePreviewPaletteCellRenderer extends DefaultListCellRenderer { 
     27//      private PagePreviewPalette pagePreviewPalette; 
     28// 
     29//      /** 
     30//       * Required for serialization. 
     31//       */ 
     32//      private static final long serialVersionUID = 3264356435643L; 
     33// 
     34//      /** 
     35//       * Custom JPanel for drawing the page preview. 
     36//       */ 
     37//      private static class PageThumbnail extends JPanel { 
     38//              /** 
     39//               * Required for serialization. 
     40//               */ 
     41//              private static final long serialVersionUID = 1744645767234L; 
     42// 
     43//              /** 
     44//               * The page view. 
     45//               */ 
     46//              private final RootPageView page; 
     47// 
     48//              /** 
     49//               * Homothety factor for the coordinates. 
     50//               */ 
     51//              private final double k; 
     52// 
     53//              /** 
     54//               * Constructor. 
     55//               *  
     56//               * @param pageView 
     57//               *            The page view. 
     58//               * @param k 
     59//               *            Homothety factor for the coordinates. 
     60//               */ 
     61//              public PageThumbnail(final RootPageView pageView, final double k) { 
     62//                      this.page = pageView; 
     63//                      this.k = k; 
     64//              } 
     65// 
     66//              /** 
     67//               * Override of the paint method, which takes cares for drawing the 
     68//               * frames. 
     69//               */ 
     70//              @Override 
     71//              public void paint(final Graphics g) { 
     72//                      super.paint(g); 
     73// 
     74//                      for (ElementH element : this.page.model().get().getChildElements(this.page.getTime())) { 
     75//                               
     76//                              ResourceRefR4 pageToElementRef = this.page.model().get().getChildRef(element); 
     77//                               
     78//                              TimePos localTime =  
     79//                                      this.page.model().get().getSubTime(pageToElementRef, this.page.getTime()); 
     80//                               
     81//                              ImmPoint location = element.getLocation(BoundMode.CONTENT, Position.TOP_LEFT, localTime); 
     82//                              ImmSize size = element.getWrapSize(); 
     83// 
     84//                              final Rectangle frameRect =  new Rectangle( 
     85//                                              location.toPoint(), size.toDimension()); 
     86//                              final int x = (int) (frameRect.x * this.k); 
     87//                              final int y = (int) (frameRect.y * this.k); 
     88//                              final int width = (int) (frameRect.width * this.k); 
     89//                              final int height = (int) (frameRect.height * this.k); 
     90// 
     91//                              g.setColor(Color.BLACK); 
     92//                              g.drawRect(x, y, width, height); 
     93//                      } 
     94//              } 
     95//      } 
     96// 
     97//      /** 
     98//       * Constructs {@link PagePreviewPaletteCellRenderer} from given 
     99//       * {@link PagePreviewPalette}. 
     100//       *  
     101//       * @param pagePreviewPalette 
     102//       *            the {@link PagePreviewPalette} 
     103//       */ 
     104//      public PagePreviewPaletteCellRenderer(PagePreviewPalette pagePreviewPalette) { 
     105//              super(); 
     106// 
     107//              this.pagePreviewPalette = pagePreviewPalette; 
     108//      } 
     109// 
     110//      @Override 
     111//      public Component getListCellRendererComponent(final JList list, 
     112//                      final Object value, final int index, final boolean isSelected, 
     113//                      final boolean cellHasFocus) { 
     114// 
     115//              final int newWidth = list.getWidth(); 
     116// 
     117//              final PagePreviewPalette.PageItem pageItem = (PagePreviewPalette.PageItem) value; 
     118//              // TODO (R4) Reimplement: 
     119//              //Dimension pageDim =  pageItem.pageView().get().getboundingRectangle().get().getSize().toDimension(); 
     120//              final int pageWidth = (int) BookR4.DEFAULT_PAGE_SIZE.getWidth(); 
     121//              final int pageHeight = (int) BookR4.DEFAULT_PAGE_SIZE.getHeight(); 
     122//              final double k = (double) pageHeight / (double) pageWidth; 
     123//              final int newHeight = (int) (k * newWidth); 
     124// 
     125//              list.setFixedCellHeight(newHeight); 
     126// 
     127//              final double coef = newWidth 
     128//                              / pageWidth; 
     129//              PageThumbnail pageThumbnail = new PageThumbnail(pageItem.pageView().get(), 
     130//                              coef); 
     131// 
     132//              if (isSelected) { 
     133//                      pageThumbnail.setBorder(BorderFactory.createCompoundBorder( 
     134//                                      BorderFactory.createLineBorder(Color.red, 2), BorderFactory 
     135//                                                      .createLoweredBevelBorder())); 
     136//              } else if (index == this.pagePreviewPalette.getDropIndex()) { 
     137//                      pageThumbnail.setBorder(BorderFactory.createCompoundBorder( 
     138//                                      BorderFactory.createLineBorder(Color.yellow, 2), 
     139//                                      BorderFactory.createLoweredBevelBorder())); 
     140//              } else { 
     141//                      pageThumbnail.setBorder(BorderFactory.createCompoundBorder( 
     142//                                      BorderFactory.createRaisedBevelBorder(), BorderFactory 
     143//                                                      .createLoweredBevelBorder())); 
     144//              } 
     145// 
     146//              return pageThumbnail; 
     147//      } 
     148//} 
  • src/main/java/org/sophie2/main/app/layout/left/pages/PagePreviewPalette.java

     
    11package org.sophie2.main.app.layout.left.pages; 
    22 
     3import java.awt.BorderLayout; 
    34import java.awt.event.KeyEvent; 
    45import java.util.HashMap; 
    56import java.util.Map; 
     
    177178                public PageItem(RootPageView pageView) { 
    178179                        getBean().init(pageView(), pageView); 
    179180                        this.result.setName(getElementId() + "/thumbnailHolder"); 
     181                        this.rollOverPanelSouth.setName(getElementId() + "/thumbnailHolder"); 
     182                        this.rollOverPanelNorth.setName(getElementId() + "/thumbnailHolder"); 
    180183                } 
    181184 
    182185                private JPanel centerPanel = new JPanel(); 
     
    184187 
    185188                private PageThumbnail thumbnail = new PageThumbnail(); 
    186189 
     190                /** 
     191                 * These panel are used to be set at the north and at the south part of the result panel. 
     192                 * When skinned, they play the role of separators. 
     193                 */ 
     194                private JPanel rollOverPanelNorth = new JPanel(); 
     195                private JPanel rollOverPanelSouth = new JPanel(); 
     196 
     197 
     198                /** 
     199                 * Used for skinning of the north and the south panels of the 
     200                 * {@link PageItem}. 
     201                 *  
     202                 * @param name 
     203                 *            The name to be set for the skin. 
     204                 * @param north 
     205                 *            Boolean parameter to indicate if north or south panel 
     206                 *            should be skinned. If <b>true</b> the north panel should 
     207                 *            be skinned, otherwise the south one. 
     208                 */ 
     209                @SuppressWarnings("synthetic-access") 
     210                public void setSkinIcon(String name, Boolean north) { 
     211                        if (north) { 
     212                                this.rollOverPanelNorth.setName(getElementId() + name); 
     213                        } else { 
     214                                this.rollOverPanelSouth.setName(getElementId() + name); 
     215                        } 
     216                } 
     217                 
    187218                @Override 
    188219                public JPanel render() { 
    189220 
    190221                        this.centerPanel.removeAll(); 
    191222                        this.result.removeAll(); 
    192223                        this.thumbnail.removeAll(); 
     224                        this.rollOverPanelSouth.removeAll(); 
     225                        this.rollOverPanelNorth.removeAll(); 
    193226 
    194227                        BaseScene scene = new BaseScene(); 
    195228                        RootPageView pageView = pageView().get(); 
     
    208241                                        this.centerPanel.add(this.thumbnail); 
    209242                                        JLabel pageNumberLabel = new JLabel("" + pageNumber); 
    210243                                        this.centerPanel.add(pageNumberLabel); 
    211                                         this.result.add(this.centerPanel); 
     244                                        this.result.setLayout(new BorderLayout()); 
     245                                         
     246                                        JPanel tmp = new JPanel(); 
     247                                        tmp.add(this.centerPanel); 
     248                                        this.result.add(tmp, BorderLayout.CENTER); 
     249                                        this.result.add(this.rollOverPanelSouth, BorderLayout.SOUTH); 
     250                                        this.result.add(this.rollOverPanelNorth, BorderLayout.NORTH); 
    212251                                } 
    213252                        } 
    214253                        return this.result; 
  • src/main/java/org/sophie2/main/app/layout/left/pages/PageReorderHandler.java

     
    22 
    33import org.sophie2.base.dnd.DndTransferable; 
    44import org.sophie2.base.dnd.DropHandler; 
     5import org.sophie2.base.layout.model.ListPaletteItem; 
    56import org.sophie2.base.model.book.BookH; 
    67import org.sophie2.base.model.resources.r4.ResourceRefList; 
    78import org.sophie2.base.model.resources.r4.changes.AutoAction; 
    89import org.sophie2.main.app.commons.element.ElementDropHandler; 
    910import org.sophie2.main.app.commons.page.RootPageView; 
     11import org.sophie2.main.app.layout.left.pages.PagePreviewPalette.PageItem; 
    1012import org.sophie2.main.dnd.dnddata.ResourceRefData; 
    1113 
    1214/** 
     
    5557                        } 
    5658                         
    5759                }.register(book.getAccess()); 
     60                 
     61                PagePreviewPalette palette = getView().findNearestElement(null, PagePreviewPalette.class); 
     62                for (ListPaletteItem listItem : palette.items().get()) { 
     63                        PageItem item = (PageItem) listItem; 
     64                        item.setSkinIcon("/thumbnailHolder", false); 
     65                        item.setSkinIcon("/thumbnailHolder", true); 
     66                } 
     67        } 
     68         
     69        @Override 
     70        public void handleExit() { 
     71                if (getView() != null) { 
     72                        PagePreviewPalette palette = getView().findNearestElement(null,  
     73                                        PagePreviewPalette.class); 
     74                        for (ListPaletteItem listItem : palette.items().get()) { 
     75                                PageItem item = (PageItem) listItem; 
     76                                item.setSkinIcon("/thumbnailHolder", false); 
     77                                item.setSkinIcon("/thumbnailHolder", true); 
     78                        } 
     79                } 
    5880        } 
    5981}