void () { final Splitter filterSplitter = new Splitter(false, 0.5f); filterSplitter.setSecondComponent(ScrollPaneFactory.createScrollPane(myChangesTree)); myLeftPanel.add(filterSplitter, BorderLayout.CENTER); final Splitter mainSplitter = new Splitter(false, 0.7f); mainSplitter.setFirstComponent(myLeftPanel); mainSplitter.setSecondComponent(myDetailsView); add(mainSplitter, BorderLayout.CENTER); myInnerSplitter = new WiseSplitter(() -> { filterSplitter.doLayout(); updateModel(); }, filterSplitter); Disposer.register(this, myInnerSplitter); mySplitterProportionsData.externalizeFromDimensionService("CommittedChanges.SplitterProportions"); mySplitterProportionsData.restoreSplitterProportions(this); }