package org.geogebra.desktop.gui.layout.panels;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JPanel;
import org.geogebra.common.main.settings.ConstructionProtocolSettings;
import org.geogebra.desktop.gui.layout.DockPanelD;
import org.geogebra.desktop.gui.view.consprotocol.ConstructionProtocolNavigationD;
@SuppressWarnings("serial")
public abstract class NavigableDockPanel extends DockPanelD {
private JPanel panel = null;
private ConstructionProtocolNavigationD consProtNav;
public NavigableDockPanel(int id, String title, String toolbar,
boolean hasStyleBar, int menuOrder) {
super(id, title, toolbar, hasStyleBar, menuOrder);
}
public NavigableDockPanel(int id, String title, String toolbar,
boolean hasStylebar, int menuOrder, char c) {
super(id, title, toolbar, hasStylebar, menuOrder, c);
}
@Override
protected JComponent loadComponent() {
if (panel == null) {
panel = new JPanel(new BorderLayout());
panel.add(getViewPanel(), BorderLayout.CENTER);
consProtNav = (ConstructionProtocolNavigationD) app.getGuiManager()
.getConstructionProtocolNavigation(id);
ConstructionProtocolSettings cps = app.getSettings()
.getConstructionProtocol();
consProtNav.settingsChanged(cps);
cps.addListener(consProtNav);
if (app.getShowCPNavNeedsUpdate(id)) {
app.setShowConstructionProtocolNavigation(
app.showConsProtNavigation(id), id);
}
consProtNav.getImpl().setBorder(BorderFactory.createMatteBorder(1,
0, 0, 0, Color.lightGray));
consProtNav.getImpl().setVisible(app.showConsProtNavigation(id));
panel.add(consProtNav.getImpl(), BorderLayout.SOUTH); // may be
// invisible,
// but made
// visible
// later
}
return panel;
}
protected abstract Component getViewPanel();
}