diff --git a/platform/api.search/src/org/netbeans/modules/search/ui/BasicSearchResultsPanel.java b/platform/api.search/src/org/netbeans/modules/search/ui/BasicSearchResultsPanel.java index 67b0e671f896..9516021af3ba 100644 --- a/platform/api.search/src/org/netbeans/modules/search/ui/BasicSearchResultsPanel.java +++ b/platform/api.search/src/org/netbeans/modules/search/ui/BasicSearchResultsPanel.java @@ -18,15 +18,24 @@ */ package org.netbeans.modules.search.ui; +import java.beans.PropertyChangeEvent; +import javax.swing.BoxLayout; +import javax.swing.JPanel; +import javax.swing.JSplitPane; import org.netbeans.modules.search.BasicComposition; +import org.netbeans.modules.search.ContextView; +import org.netbeans.modules.search.FindDialogMemory; import org.netbeans.modules.search.ResultModel; import org.openide.nodes.Node; +import org.openide.util.RequestProcessor; /** * * @author jhavlin */ public class BasicSearchResultsPanel extends BasicAbstractResultsPanel { + private final RequestProcessor.Task SAVE_TASK = RequestProcessor.getDefault().create(new BasicSearchResultsPanel.SaveTask()); + private JSplitPane splitPane; public BasicSearchResultsPanel(ResultModel resultModel, BasicComposition composition, boolean details, Node infoNode) { @@ -37,6 +46,39 @@ public BasicSearchResultsPanel(ResultModel resultModel, } private void init() { - getContentPanel().add(resultsOutlineSupport.getOutlineView()); + JPanel leftPanel = new JPanel(); + leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.PAGE_AXIS)); + leftPanel.add(resultsOutlineSupport.getOutlineView()); + + this.splitPane = new JSplitPane(); + splitPane.setLeftComponent(leftPanel); + splitPane.setRightComponent(new ContextView(resultModel, + getExplorerManager())); + initSplitDividerLocationHandling(); + getContentPanel().add(splitPane); + } + + private void initSplitDividerLocationHandling() { + int location = FindDialogMemory.getDefault().getReplaceResultsDivider(); + if (location > 0) { + splitPane.setDividerLocation(location); + } + splitPane.addPropertyChangeListener((PropertyChangeEvent evt) -> { + String pn = evt.getPropertyName(); + if (pn.equals(JSplitPane.DIVIDER_LOCATION_PROPERTY)) { + SAVE_TASK.schedule(1000); + } + }); + } + + private class SaveTask implements Runnable { + + @Override + public void run() { + if (splitPane != null) { + FindDialogMemory.getDefault().setReplaceResultsDivider( + splitPane.getDividerLocation()); + } + } } }