Search in sources :

Example 1 with ProportionalSplitPane

use of com.mucommander.ui.layout.ProportionalSplitPane in project mucommander by mucommander.

the class MainFrame method init.

private void init(FolderPanel leftFolderPanel, FolderPanel rightFolderPanel) {
    // Set the window icon
    setWindowIcon();
    DesktopManager.customizeMainFrame(this);
    // Enable window resize
    setResizable(true);
    // The toolbar should have no inset, this is why it is left out of the insetsPane
    JPanel contentPane = new JPanel(new BorderLayout());
    setContentPane(contentPane);
    // Initializes the folder panels and file tables.
    this.leftFolderPanel = leftFolderPanel;
    this.rightFolderPanel = rightFolderPanel;
    leftTable = leftFolderPanel.getFileTable();
    rightTable = rightFolderPanel.getFileTable();
    activeTable = leftTable;
    // Create the toolbar and corresponding panel wrapping it, and show it only if it hasn't been disabled in the
    // preferences.
    // Note: Toolbar.setVisible() has to be called no matter if Toolbar is visible or not, in order for it to be
    // properly initialized
    this.toolbar = new ToolBar(this);
    this.toolbarPanel = ToolbarMoreButton.wrapToolBar(toolbar);
    this.toolbarPanel.setVisible(MuConfigurations.getPreferences().getVariable(MuPreference.TOOLBAR_VISIBLE, MuPreferences.DEFAULT_TOOLBAR_VISIBLE));
    contentPane.add(toolbarPanel, BorderLayout.NORTH);
    JPanel insetsPane = new JPanel(new BorderLayout()) {

        // Add an x=3,y=3 gap around content pane
        @Override
        public Insets getInsets() {
            // No top inset
            return new Insets(0, 3, 3, 3);
        }
    };
    // Below the toolbar there is the pane with insets
    contentPane.add(insetsPane, BorderLayout.CENTER);
    // Listen to location change events to display the current folder in the window's title
    leftFolderPanel.getLocationManager().addLocationListener(this);
    rightFolderPanel.getLocationManager().addLocationListener(this);
    // Create menu bar (has to be created after toolbar)
    MainMenuBar menuBar = new MainMenuBar(this);
    setJMenuBar(menuBar);
    // Create the split pane that separates folder panels and allows to resize how much space is allocated to the
    // both of them. The split orientation is loaded from and saved to the preferences.
    // Note: the vertical/horizontal terminology used in muCommander is just the opposite of the one used
    // in JSplitPane which is anti-natural / confusing.
    splitPane = new ProportionalSplitPane(this, MuSnapshot.getSnapshot().getVariable(MuSnapshot.getSplitOrientation(0), MuSnapshot.DEFAULT_SPLIT_ORIENTATION).equals(MuSnapshot.VERTICAL_SPLIT_ORIENTATION) ? JSplitPane.HORIZONTAL_SPLIT : JSplitPane.VERTICAL_SPLIT, false, MainFrame.this.leftFolderPanel, MainFrame.this.rightFolderPanel) {

        // We don't want any extra space around split pane
        @Override
        public Insets getInsets() {
            return new Insets(0, 0, 0, 0);
        }
    };
    // Remove any default border the split pane has
    splitPane.setBorder(null);
    // Adds buttons that allow to collapse and expand the split pane in both directions
    splitPane.setOneTouchExpandable(true);
    // Disable all the JSplitPane accessibility shortcuts that are registered by default, as some of them
    // conflict with default mucommander action shortcuts (e.g. F6 and F8)
    splitPane.disableAccessibilityShortcuts();
    // Split pane will be given any extra space
    insetsPane.add(splitPane, BorderLayout.CENTER);
    // Add a 2-pixel gap between the file table and status bar
    YBoxPanel southPanel = new YBoxPanel();
    southPanel.addSpace(2);
    // Add status bar
    this.statusBar = new StatusBar(this);
    southPanel.add(statusBar);
    // Show command bar only if it hasn't been disabled in the preferences
    this.commandBar = new CommandBar(this);
    // Note: CommandBar.setVisible() has to be called no matter if CommandBar is visible or not, in order for it to be properly initialized
    this.commandBar.setVisible(MuConfigurations.getPreferences().getVariable(MuPreference.COMMAND_BAR_VISIBLE, MuPreferences.DEFAULT_COMMAND_BAR_VISIBLE));
    southPanel.add(commandBar);
    insetsPane.add(southPanel, BorderLayout.SOUTH);
    // Perform CloseAction when the user asked the window to close
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent e) {
            ActionManager.performAction(CloseWindowAction.Descriptor.ACTION_ID, MainFrame.this);
        }
    });
    ActionKeymap.registerActions(this);
    // Fire table change events on registered ActivePanelListener instances, to notify of the initial active table.
    fireActivePanelChanged(activeTable.getFolderPanel());
    // Set the custom FocusTraversalPolicy that manages focus for both FolderPanel and their sub components.
    setFocusTraversalPolicy(new CustomFocusTraversalPolicy());
}
Also used : JPanel(javax.swing.JPanel) Insets(java.awt.Insets) CommandBar(com.mucommander.ui.main.commandbar.CommandBar) WindowAdapter(java.awt.event.WindowAdapter) BorderLayout(java.awt.BorderLayout) YBoxPanel(com.mucommander.commons.util.ui.layout.YBoxPanel) MainMenuBar(com.mucommander.ui.main.menu.MainMenuBar) WindowEvent(java.awt.event.WindowEvent) ToolBar(com.mucommander.ui.main.toolbar.ToolBar) ProportionalSplitPane(com.mucommander.ui.layout.ProportionalSplitPane)

Aggregations

YBoxPanel (com.mucommander.commons.util.ui.layout.YBoxPanel)1 ProportionalSplitPane (com.mucommander.ui.layout.ProportionalSplitPane)1 CommandBar (com.mucommander.ui.main.commandbar.CommandBar)1 MainMenuBar (com.mucommander.ui.main.menu.MainMenuBar)1 ToolBar (com.mucommander.ui.main.toolbar.ToolBar)1 BorderLayout (java.awt.BorderLayout)1 Insets (java.awt.Insets)1 WindowAdapter (java.awt.event.WindowAdapter)1 WindowEvent (java.awt.event.WindowEvent)1 JPanel (javax.swing.JPanel)1