# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: D:\projects\nb\core\windows\src\org\netbeans\core\windows # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: model/Model.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\model\Model.java Base (1.16) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\model\Model.java Locally Modified (Based On 1.16) *************** *** 20,38 **** package org.netbeans.core.windows.model; ! import java.util.ArrayList; import org.netbeans.core.windows.ModeImpl; import org.netbeans.core.windows.SplitConstraint; import org.netbeans.core.windows.TopComponentGroupImpl; import org.netbeans.core.windows.WindowSystemSnapshot; import org.openide.windows.TopComponent; - import java.awt.*; import java.util.Collection; import java.util.List; import java.util.Set; --- 20,35 ---- package org.netbeans.core.windows.model; ! import java.awt.Rectangle; import org.netbeans.core.windows.ModeImpl; import org.netbeans.core.windows.SplitConstraint; import org.netbeans.core.windows.TopComponentGroupImpl; import org.netbeans.core.windows.WindowSystemSnapshot; import org.openide.windows.TopComponent; import java.util.Collection; import java.util.List; + import java.util.Map; import java.util.Set; *************** *** 88,99 **** /** Removes top component group. */ public void removeTopComponentGroup(TopComponentGroupImpl tcGroup); /** Adds sliding mode into specific side */ ! public void addSlidingMode(ModeImpl mode, String side); /** Resets the model to an initial state. */ public void reset(); // Mutators (global level) << ///////////////////////////// --- 88,98 ---- /** Removes top component group. */ public void removeTopComponentGroup(TopComponentGroupImpl tcGroup); /** Adds sliding mode into specific side */ ! public void addSlidingMode(ModeImpl mode, String side, Map slideInSizes); /** Resets the model to an initial state. */ public void reset(); + /** Set the size (width or height of the given TopComponent when it is slided in */ + public void setSlideInSize(String side, TopComponent tc, int size); // Mutators (global level) << ///////////////////////////// *************** *** 135,140 **** --- 137,147 ---- public String getSlidingModeConstraints(ModeImpl mode); /** Gets constraints (its side) for sliding mode */ public ModeImpl getSlidingMode(String side); + /** + * Gets the sizes (width or height) of TopComponents in the given sliding + * side, the key in the Map is TopComponent's ID + */ + public Map getSlideInSizes(String side); // Accessors (global level) >> ////////////////////////////// Index: view/SlidingAccessor.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\SlidingAccessor.java Base (1.3) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\SlidingAccessor.java Locally Modified (Based On 1.3) *************** *** 20,26 **** --- 20,29 ---- package org.netbeans.core.windows.view; + import java.util.Map; + import org.openide.windows.TopComponent; + /** * Access point to data for SlidingView. * *************** *** 30,35 **** --- 33,39 ---- public String getSide(); + public Map getSlideInSizes(); + } Index: view/SlidingView.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\SlidingView.java Base (1.5) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\SlidingView.java Locally Modified (Based On 1.5) *************** *** 21,29 **** --- 21,33 ---- package org.netbeans.core.windows.view; import java.awt.Rectangle; + import java.util.Map; + import org.netbeans.core.windows.Constants; + import org.netbeans.core.windows.WindowManagerImpl; import org.netbeans.core.windows.view.dnd.WindowDnDManager; import org.netbeans.core.windows.view.ui.slides.SlideBarContainer; import org.openide.windows.TopComponent; + import org.openide.windows.WindowManager; /** *************** *** 36,49 **** /** Orientation of sliding view, means side where it is located */ private final String side; private Rectangle slideBounds; public SlidingView(Controller controller, WindowDnDManager windowDnDManager, ! TopComponent[] topComponents, TopComponent selectedTopComponent, String side) { super(controller); this.side = side; // mkleint - needs to be called after side is defined. this.container = new SlideBarContainer(this, windowDnDManager); --- 40,54 ---- /** Orientation of sliding view, means side where it is located */ private final String side; private Rectangle slideBounds; + private Map slideInSizes; public SlidingView(Controller controller, WindowDnDManager windowDnDManager, ! TopComponent[] topComponents, ! TopComponent selectedTopComponent, ! String side, Map slideInSizes) { super(controller); this.side = side; + this.slideInSizes = slideInSizes; // mkleint - needs to be called after side is defined. this.container = new SlideBarContainer(this, windowDnDManager); setTopComponents(topComponents, selectedTopComponent); *************** *** 55,72 **** } public Rectangle getSlideBounds() { ! return slideBounds; } public void setSlideBounds(Rectangle slideBounds) { this.slideBounds = slideBounds; } ! ! } --- 63,99 ---- } public Rectangle getSlideBounds() { ! Rectangle res = slideBounds; ! res.height = 0; ! res.width = 0; ! ! TopComponent tc = getSelectedTopComponent(); ! //check if the slided-in TopComponent has a custom size defined ! if( null != tc ) { ! Integer prevSlideSize = slideInSizes.get( tc ); ! if( null != prevSlideSize ) { ! if( null == res ) ! res = tc.getBounds(); ! if( Constants.BOTTOM.equals( side ) ) { ! res.height = prevSlideSize.intValue(); ! } else { ! res.width = prevSlideSize.intValue(); } + } + } + return res; + } public void setSlideBounds(Rectangle slideBounds) { this.slideBounds = slideBounds; } ! public void setSlideInSizes(Map slideInSizes) { ! this.slideInSizes = slideInSizes; } + } Index: model/DefaultModel.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\model\DefaultModel.java Base (1.21) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\model\DefaultModel.java Locally Modified (Based On 1.21) *************** *** 26,35 **** import java.awt.Rectangle; import java.lang.ref.Reference; import java.lang.ref.WeakReference; ! import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; ! import org.netbeans.core.windows.*; import org.openide.windows.TopComponent; --- 26,47 ---- import java.awt.Rectangle; import java.lang.ref.Reference; import java.lang.ref.WeakReference; ! import java.util.Collection; ! import java.util.Collections; ! import java.util.HashSet; ! import java.util.Iterator; ! import java.util.List; ! import java.util.Map; ! import java.util.Set; ! import java.util.WeakHashMap; import java.util.logging.Level; import java.util.logging.Logger; ! import org.netbeans.core.windows.Constants; ! import org.netbeans.core.windows.ModeImpl; ! import org.netbeans.core.windows.ModeStructureSnapshot; ! import org.netbeans.core.windows.SplitConstraint; ! import org.netbeans.core.windows.TopComponentGroupImpl; ! import org.netbeans.core.windows.WindowSystemSnapshot; import org.openide.windows.TopComponent; *************** *** 233,241 **** } } ! public void addSlidingMode(ModeImpl mode, String side) { synchronized(LOCK_MODES) { ! modesSubModel.addModeSliding(mode, side); } } --- 245,253 ---- } } ! public void addSlidingMode(ModeImpl mode, String side, Map slideInSizes) { synchronized(LOCK_MODES) { ! modesSubModel.addModeSliding(mode, side, slideInSizes); } } *************** *** 437,442 **** --- 449,465 ---- } } + public Map getSlideInSizes(String side) { + synchronized(LOCK_MODES) { + return modesSubModel.getSlideInSizes( side ); + } + } + + public void setSlideInSize(String side, TopComponent tc, int size) { + synchronized(LOCK_MODES) { + modesSubModel.setSlideInSize(side, tc, size); + } + } ///////////////////////////////////// // Accessor methods << ///////////////////////////////////// Index: view/ViewHelper.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\ViewHelper.java Base (1.21) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\ViewHelper.java Locally Modified (Based On 1.21) *************** *** 112,118 **** s.add(new ModeStructureAccessorImpl.SlidingAccessorImpl( snapshot.getOriginator(), snapshot, ! snapshot.getSide() )); } --- 112,119 ---- s.add(new ModeStructureAccessorImpl.SlidingAccessorImpl( snapshot.getOriginator(), snapshot, ! snapshot.getSide(), ! snapshot.getSlideInSizes() )); } Index: view/ViewHierarchy.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\ViewHierarchy.java Base (1.45) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\view\ViewHierarchy.java Locally Modified (Based On 1.45) *************** *** 222,227 **** --- 222,228 ---- SlidingView sv = (SlidingView)view; sv.setTopComponents(sa.getOpenedTopComponents(), sa.getSelectedTopComponent()); sv.setSlideBounds(sa.getBounds()); + sv.setSlideInSizes(sa.getSlideInSizes()); return sv; } else if(patternAccessor instanceof ModeAccessor) { // It is a ModeView. *************** *** 253,259 **** SlidingAccessor sa = (SlidingAccessor)patternAccessor; SlidingView sv = new SlidingView(controller, windowDnDManager, sa.getOpenedTopComponents(),sa.getSelectedTopComponent(), ! sa.getSide()); sv.setSlideBounds(sa.getBounds()); accessor2view.put(patternAccessor, sv); view2accessor.put(sv, patternAccessor); --- 254,261 ---- SlidingAccessor sa = (SlidingAccessor)patternAccessor; SlidingView sv = new SlidingView(controller, windowDnDManager, sa.getOpenedTopComponents(),sa.getSelectedTopComponent(), ! sa.getSide(), ! sa.getSlideInSizes()); sv.setSlideBounds(sa.getBounds()); accessor2view.put(patternAccessor, sv); view2accessor.put(sv, patternAccessor); Index: persistence/ModeParser.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\persistence\ModeParser.java Base (1.28) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\persistence\ModeParser.java Locally Modified (Based On 1.28) *************** *** 59,64 **** --- 59,66 ---- = "-//NetBeans//DTD Mode Properties 2.0//EN"; // NOI18N public static final String INSTANCE_DTD_ID_2_1 = "-//NetBeans//DTD Mode Properties 2.1//EN"; // NOI18N + public static final String INSTANCE_DTD_ID_2_2 + = "-//NetBeans//DTD Mode Properties 2.2//EN"; // NOI18N /** Name of extended attribute for order of children */ private static final String EA_ORDER = "WinSys-TCRef-Order"; // NOI18N *************** *** 1029,1034 **** --- 1031,1038 ---- handleKind(attrs); } else if ("slidingSide".equals(qname)) { // NOI18N handleSlidingSide(attrs); + } else if ("slideInSize".equals(qname)) { // NOI18N + handleSlideInSize(attrs); } else if ("state".equals(qname)) { // NOI18N handleState(attrs); } else if ("constraints".equals(qname)) { // NOI18N *************** *** 1171,1176 **** --- 1175,1200 ---- } } + /** Reads element "slideInSize" */ + private void handleSlideInSize(Attributes attrs) { + String tcId = attrs.getValue("tc-id"); + String size = attrs.getValue("size"); + if (tcId != null && size != null) { + try { + Integer intSize = Integer.valueOf( size ); + if( null == modeConfig.slideInSizes ) + modeConfig.slideInSizes = new HashMap(5); + modeConfig.slideInSizes.put( tcId, intSize ); + return; + } catch( NumberFormatException nfE ) { + //fall through + } + } + PersistenceManager.LOG.log(Level.WARNING, + "[WinSys.ModeParser.handleSlideInSize]" // NOI18N + + " Warning: Invalid attributes for preferred slide-in size."); // NOI18N + } + private void handleState(Attributes attrs) throws SAXException { String type = attrs.getValue("type"); // NOI18N if (type != null) { *************** *** 1445,1450 **** --- 1469,1476 ---- appendKind(mc, buff); if (mc.kind == Constants.MODE_KIND_SLIDING) { appendSlidingSide(mc, buff); + if( null != mc.slideInSizes ) + appendSlideInSize(mc, buff); } appendState(mc, buff); appendConstraints(mc, buff); *************** *** 1504,1509 **** --- 1530,1550 ---- buff.append("/>\n"); // NOI18N } + private void appendSlideInSize(ModeConfig mc, StringBuffer buff) { + if( null != mc.slideInSizes ) { + for( Iterator i=mc.slideInSizes.keySet().iterator(); i.hasNext(); ) { + String tcId = i.next(); + Integer size = mc.slideInSizes.get(tcId); + + buff.append(" \n"); // NOI18N + } + } + } + private void appendState (ModeConfig mc, StringBuffer buff) { buff.append(" slideInSizes; ! public SlidingAccessorImpl(ModelElement originator, ! ModeStructureSnapshot.ModeSnapshot snapshot, ! String side, Map slideInSizes) { super(originator, snapshot); this.side = side; + this.slideInSizes = slideInSizes; } public String getSide() { return side; } + public Map getSlideInSizes() { + return slideInSizes; + } + public boolean originatorEquals(ElementAccessor o) { if(!super.originatorEquals(o)) { return false; Index: persistence/PersistenceManager.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\persistence\PersistenceManager.java Base (1.38) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\persistence\PersistenceManager.java Locally Modified (Based On 1.38) *************** *** 942,947 **** --- 942,948 ---- || ModeParser.INSTANCE_DTD_ID_1_2.equals(publicId) || ModeParser.INSTANCE_DTD_ID_2_0.equals(publicId) || ModeParser.INSTANCE_DTD_ID_2_1.equals(publicId) + || ModeParser.INSTANCE_DTD_ID_2_2.equals(publicId) || GroupParser.INSTANCE_DTD_ID_2_0.equals(publicId) || TCGroupParser.INSTANCE_DTD_ID_2_0.equals(publicId) || TCRefParser.INSTANCE_DTD_ID_1_0.equals(publicId) Index: WindowManagerImpl.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\WindowManagerImpl.java Base (1.48) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\WindowManagerImpl.java Locally Modified (Based On 1.48) *************** *** 467,473 **** return mode; } ! public ModeImpl createSlidingMode(String name, boolean permanent, String side) { // It gets existing mode with the same name. ModeImpl mode = (ModeImpl)findMode(name); if(mode != null) { --- 467,473 ---- return mode; } ! public ModeImpl createSlidingMode(String name, boolean permanent, String side, Map slideInSizes) { // It gets existing mode with the same name. ModeImpl mode = (ModeImpl)findMode(name); if(mode != null) { *************** *** 475,481 **** } mode = createModeImpl(name, Constants.MODE_KIND_SLIDING, permanent); ! central.addSlidingMode(mode, null, side); return mode; } --- 475,481 ---- } mode = createModeImpl(name, Constants.MODE_KIND_SLIDING, permanent); ! central.addSlidingMode(mode, null, side, slideInSizes); return mode; } *************** *** 679,685 **** private void addMode(ModeImpl mode, SplitConstraint[] modeConstraints) { if (mode.getKind() == Constants.MODE_KIND_SLIDING) { // TODO.. where to get the side.. ! central.addSlidingMode(mode, null, Constants.LEFT); } else { central.addMode(mode, modeConstraints); } --- 679,685 ---- private void addMode(ModeImpl mode, SplitConstraint[] modeConstraints) { if (mode.getKind() == Constants.MODE_KIND_SLIDING) { // TODO.. where to get the side.. ! central.addSlidingMode(mode, null, Constants.LEFT, null); } else { central.addMode(mode, modeConstraints); } Index: Central.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\Central.java Base (1.45) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\Central.java Locally Modified (Based On 1.45) *************** *** 1746,1752 **** // Sliding /** Adds mode into model and requests view (if needed). */ ! public void addSlidingMode(ModeImpl mode, ModeImpl original, String side) { ModeImpl targetMode = model.getSlidingMode(side); if (targetMode != null) { //TODO what to do here.. something there already --- 1746,1752 ---- // Sliding /** Adds mode into model and requests view (if needed). */ ! public void addSlidingMode(ModeImpl mode, ModeImpl original, String side, Map slideInSizes) { ModeImpl targetMode = model.getSlidingMode(side); if (targetMode != null) { //TODO what to do here.. something there already *************** *** 1755,1761 **** targetMode = WindowManagerImpl.getInstance().createModeImpl( ModeImpl.getUnusedModeName(), Constants.MODE_KIND_SLIDING, false); ! model.addSlidingMode(mode, side); if(isVisible()) { viewRequestor.scheduleRequest( --- 1755,1761 ---- targetMode = WindowManagerImpl.getInstance().createModeImpl( ModeImpl.getUnusedModeName(), Constants.MODE_KIND_SLIDING, false); ! model.addSlidingMode(mode, side, slideInSizes); if(isVisible()) { viewRequestor.scheduleRequest( *************** *** 1771,1777 **** if (targetMode == null) { targetMode = WindowManagerImpl.getInstance().createModeImpl( ModeImpl.getUnusedModeName(), Constants.MODE_KIND_SLIDING, false); ! model.addSlidingMode(targetMode, targetSide); model.setModeBounds(targetMode, new Rectangle(tc.getBounds())); } --- 1771,1777 ---- if (targetMode == null) { targetMode = WindowManagerImpl.getInstance().createModeImpl( ModeImpl.getUnusedModeName(), Constants.MODE_KIND_SLIDING, false); ! model.addSlidingMode(targetMode, targetSide, null); model.setModeBounds(targetMode, new Rectangle(tc.getBounds())); } *************** *** 1802,1807 **** --- 1802,1812 ---- public void userResizedSlidingMode(ModeImpl mode, Rectangle rect) { model.setModeBounds(mode, new Rectangle(rect)); + //remember user's settings for the slided-in TopComponent size + String side = model.getSlidingModeConstraints( mode ); + model.setSlideInSize( side, + mode.getSelectedTopComponent(), + Constants.BOTTOM.equals( side ) ? rect.height : rect.width ); } *************** *** 1858,1863 **** --- 1863,1876 ---- model.setModeTopComponentPreviousMode(currentSlidingMode, tcID, prevMode); } + public Map getSlideInSizes( String side ) { + return model.getSlideInSizes( side ); + } + + public void setSlideInSize( String side, TopComponent tc, int size ) { + model.setSlideInSize( side, tc, size ); + } + // ControllerHandler << //////////////////////////// Index: persistence/ModeConfig.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\persistence\ModeConfig.java Base (1.7) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\persistence\ModeConfig.java Locally Modified (Based On 1.7) *************** *** 21,29 **** package org.netbeans.core.windows.persistence; import org.netbeans.core.windows.SplitConstraint; ! import java.awt.*; /** --- 21,31 ---- package org.netbeans.core.windows.persistence; + import java.awt.Rectangle; import org.netbeans.core.windows.SplitConstraint; ! import java.util.Iterator; ! import java.util.Map; /** *************** *** 64,69 **** --- 66,74 ---- /** Array of TCRefConfigs. */ public TCRefConfig[] tcRefConfigs; + /** TopComponent ID -> slided-in size (width or height) - applies to sliding modes only*/ + public Map slideInSizes; + /** Creates a new instance of ModeConfig */ public ModeConfig() { name = ""; // NOI18N *************** *** 132,137 **** --- 137,153 ---- return false; } } + if( null != slideInSizes && null != modeCfg.slideInSizes ) { + if( slideInSizes.size() != modeCfg.slideInSizes.size() ) + return false; + for (Iterator i=slideInSizes.keySet().iterator(); i.hasNext(); ) { + String tcId = i.next(); + if( !slideInSizes.get(tcId).equals(modeCfg.slideInSizes.get(tcId)) ) + return false; + } + } else if( null != slideInSizes || null != modeCfg.slideInSizes ) { + return false; + } return true; } *************** *** 158,163 **** --- 174,186 ---- for (int i = 0; i < tcRefConfigs.length; i++) { hash = 37 * hash + tcRefConfigs[i].hashCode(); } + if( null != slideInSizes ) { + for (Iterator i=slideInSizes.keySet().iterator(); i.hasNext(); ) { + Object key = i.next(); + hash = 37 * hash + key.hashCode(); + hash = 37 * hash + slideInSizes.get(key).hashCode(); + } + } return hash; } Index: ModeStructureSnapshot.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\ModeStructureSnapshot.java Base (1.8) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\ModeStructureSnapshot.java Locally Modified (Based On 1.8) *************** *** 363,381 **** public static class SlidingModeSnapshot extends ModeSnapshot { private final String side; ! public SlidingModeSnapshot(ModeImpl mode, String side) { super(null, null, mode, 0D); this.side = side; } public String getSide () { return side; } } // end of SlidingModeSnapshot --- 363,384 ---- public static class SlidingModeSnapshot extends ModeSnapshot { private final String side; + private final Map slideInSizes; ! public SlidingModeSnapshot(ModeImpl mode, String side, Map slideInSizes) { super(null, null, mode, 0D); this.side = side; + this.slideInSizes = slideInSizes; } public String getSide () { return side; } + + public Map getSlideInSizes() { + return slideInSizes; + } } // end of SlidingModeSnapshot Index: resources/layer.xml *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\resources\layer.xml Base (1.46) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\resources\layer.xml Locally Modified (Based On 1.46) *************** *** 226,231 **** --- 226,234 ---- + + + Index: PersistenceHandler.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\PersistenceHandler.java Base (1.42) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\PersistenceHandler.java Locally Modified (Based On 1.42) *************** *** 274,280 **** ModeImpl mode; if (mc.kind == Constants.MODE_KIND_SLIDING) { ! mode = WindowManagerImpl.getInstance().createSlidingMode(mc.name, mc.permanent, mc.side); } else { mode = WindowManagerImpl.getInstance().createMode( mc.name, mc.kind, mc.state, mc.permanent, mc.constraints); --- 274,281 ---- ModeImpl mode; if (mc.kind == Constants.MODE_KIND_SLIDING) { ! mode = WindowManagerImpl.getInstance().createSlidingMode( ! mc.name, mc.permanent, mc.side, mc.slideInSizes); } else { mode = WindowManagerImpl.getInstance().createMode( mc.name, mc.kind, mc.state, mc.permanent, mc.constraints); *************** *** 542,548 **** --- 543,552 ---- } if (wm instanceof WindowManagerImpl) { modeCfg.side = wm.getCentral().getModeSide(mode); + if( null != modeCfg.side ) { + modeCfg.slideInSizes = wm.getCentral().getSlideInSizes( modeCfg.side ); } + } if(DEBUG) { debugLog("mode side=" + modeCfg.side); // NOI18N } Index: model/ModesSubModel.java *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\model\ModesSubModel.java Base (1.11) --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\model\ModesSubModel.java Locally Modified (Based On 1.11) *************** *** 19,31 **** package org.netbeans.core.windows.model; - import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; - import java.util.HashSet; import java.util.Iterator; import java.util.Map; - import java.util.Set; import org.netbeans.core.windows.Constants; import org.netbeans.core.windows.ModeImpl; import org.netbeans.core.windows.ModeStructureSnapshot; --- 19,28 ---- *************** *** 33,38 **** --- 30,37 ---- import java.util.HashSet; import java.util.Set; + import org.netbeans.core.windows.WindowManagerImpl; + import org.openide.windows.TopComponent; /** *************** *** 65,70 **** --- 64,72 ---- private ModeImpl activeMode; /** Maximized mode. */ private ModeImpl maximizedMode; + // (sliding side + TopComponent ID) -> size in pixels (width or height + //depending on the sliding side) + private final Map slideInSizes = new HashMap(15); /** Creates a new instance of ModesModel */ *************** *** 186,192 **** return result; } ! public boolean addModeSliding(ModeImpl mode, String side) { if(modes.contains(mode) || (mode.getKind() != Constants.MODE_KIND_SLIDING)) { return false; } --- 188,194 ---- return result; } ! public boolean addModeSliding(ModeImpl mode, String side, Map slideInSizes) { if(modes.contains(mode) || (mode.getKind() != Constants.MODE_KIND_SLIDING)) { return false; } *************** *** 196,205 **** --- 198,247 ---- modes.add(mode); + if( null != slideInSizes ) { + for( Iterator i=slideInSizes.keySet().iterator(); i.hasNext(); ) { + String tcId = i.next(); + this.slideInSizes.put( side+tcId, slideInSizes.get( tcId ) ); + } + } + return true; } + public Map getSlideInSizes(String side) { + Map res = new HashMap( 5 ); + for( Iterator i=slideInSizes.keySet().iterator(); i.hasNext(); ) { + String key = i.next(); + if( key.startsWith( side ) ) { + String tcId = key.substring( side.length() ); + Integer size = slideInSizes.get( key ); + res.put( tcId, size ); + } + } + return res; + } + public Map getSlideInSizes(ModeImpl mode) { + WindowManagerImpl wm = WindowManagerImpl.getInstance(); + TopComponent[] tcs = mode.getTopComponents(); + Map res = new HashMap( tcs.length ); + for( TopComponent tc : tcs ) { + String tcId = wm.findTopComponentID( tc ); + Integer size = slideInSizes.get( mode.getSide() + tcId ); + if( null != size ) { + res.put( tc, size ); + } + } + return res; + } + + public void setSlideInSize(String side, TopComponent tc, int size) { + if( null != tc && null != side ) { + String tcId = WindowManagerImpl.getInstance().findTopComponentID(tc); + slideInSizes.put( side+tcId, new Integer(size) ); + } + } + public boolean removeMode(ModeImpl mode) { int kind = mode.getKind(); if (kind == Constants.MODE_KIND_SLIDING) { *************** *** 280,286 **** new HashSet(); for (Map.Entry curEntry: slidingModes2Sides.entrySet()) { result.add(new ModeStructureSnapshot.SlidingModeSnapshot( ! curEntry.getKey(), curEntry.getValue())); } return result; --- 322,329 ---- new HashSet(); for (Map.Entry curEntry: slidingModes2Sides.entrySet()) { result.add(new ModeStructureSnapshot.SlidingModeSnapshot( ! curEntry.getKey(), curEntry.getValue(), ! getSlideInSizes(curEntry.getKey()))); } return result; Index: resources/mode-properties2_2.dtd *** D:\projects\nb\core\windows\src\org\netbeans\core\windows\resources\mode-properties2_2.dtd No Base Revision --- D:\projects\nb\core\windows\src\org\netbeans\core\windows\resources\mode-properties2_2.dtd Locally New *************** *** 1,0 **** --- 1,191 ---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +