/*
* The MIT License (MIT)
*
* Copyright (c) 2007-2015 Broad Institute
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.broad.igv.ui;
import org.apache.log4j.Logger;
import org.broad.igv.ui.panel.MainPanel;
import org.broad.igv.ui.panel.TrackPanel;
import org.broad.igv.ui.util.ApplicationStatusBar;
import javax.swing.*;
import javax.swing.plaf.basic.BasicBorders;
import java.awt.*;
/**
* The content pane for the IGV main window.
*/
public class IGVContentPane extends JPanel {
private static Logger log = Logger.getLogger(IGVContentPane.class);
private JPanel commandBarPanel;
private IGVCommandBar igvCommandBar;
private MainPanel mainPanel;
private ApplicationStatusBar statusBar;
private IGV igv;
/**
* Creates new form IGV
*/
public IGVContentPane(IGV igv) {
setOpaque(true); // Required by Swing
this.igv = igv;
// Create components
setLayout(new BorderLayout());
commandBarPanel = new JPanel();
BoxLayout layout = new BoxLayout(commandBarPanel, BoxLayout.PAGE_AXIS);
commandBarPanel.setLayout(layout);
add(commandBarPanel, BorderLayout.NORTH);
igvCommandBar = new IGVCommandBar();
igvCommandBar.setMinimumSize(new Dimension(250, 33));
igvCommandBar.setBorder(new BasicBorders.MenuBarBorder(Color.GRAY, Color.GRAY));
igvCommandBar.setAlignmentX(Component.BOTTOM_ALIGNMENT);
commandBarPanel.add(igvCommandBar);
mainPanel = new MainPanel(igv);
add(mainPanel, BorderLayout.CENTER);
statusBar = new ApplicationStatusBar();
statusBar.setDebugGraphicsOptions(javax.swing.DebugGraphics.NONE_OPTION);
add(statusBar, BorderLayout.SOUTH);
}
public void addCommandBar(JComponent component) {
component.setBorder(new BasicBorders.MenuBarBorder(Color.GRAY, Color.GRAY));
component.setAlignmentX(Component.BOTTOM_ALIGNMENT);
commandBarPanel.add(component);
commandBarPanel.invalidate();
}
@Override
public Dimension getPreferredSize() {
return UIConstants.preferredSize;
}
public void revalidateTrackPanels() {
for (TrackPanel tp : mainPanel.getTrackPanels()) {
tp.getScrollPane().getDataPanel().revalidate();
}
}
/**
* Reset the default status message, which is the number of tracks loaded.
*/
public void resetStatusMessage() {
statusBar.setMessage("" + igv.getVisibleTrackCount() + " tracks loaded");
}
public MainPanel getMainPanel() {
return mainPanel;
}
public IGVCommandBar getCommandBar() {
return igvCommandBar;
}
public ApplicationStatusBar getStatusBar() {
return statusBar;
}
}