/**
* Copyright (C) 2015 Valkyrie RCP
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.valkyriercp.application.docking.editor;
import org.valkyriercp.application.Editor;
import org.valkyriercp.application.PageComponent;
import org.valkyriercp.application.PageComponentPane;
import org.valkyriercp.factory.AbstractControlFactory;
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JPanel;
public class EditorComponentPane extends AbstractControlFactory implements PageComponentPane {
private PageComponent component;
public EditorComponentPane(PageComponent component){
this.component = component;
}
public PageComponent getPageComponent() {
return component;
}
protected JComponent createControl() {
JPanel panel = new JPanel(new BorderLayout());
JPanel actionBarsPanel = createActionBarsPanel();
if(actionBarsPanel != null){
panel.add(actionBarsPanel, BorderLayout.NORTH);
}
Component component = (getPageComponent()).getControl();
panel.add(component, BorderLayout.CENTER);
return panel;
}
private JPanel createActionBarsPanel(){
JPanel panel = new JPanel(new BorderLayout());
JComponent menuBar = createViewMenuBar();
JComponent toolBar = createViewToolBar();
if(menuBar == null && toolBar == null){
return null;
}
if(menuBar != null && toolBar != null){
panel.add(menuBar, BorderLayout.NORTH);
panel.add(toolBar, BorderLayout.SOUTH);
}
else if(menuBar != null){
panel.add(menuBar, BorderLayout.NORTH);
}
else if(toolBar != null){
panel.add(toolBar, BorderLayout.NORTH);
}
panel.setBorder(BorderFactory.createLoweredBevelBorder());
return panel;
}
/**
* Returns the view specific toolbar if the underlying view
* implementation supports it.
*/
protected JComponent createViewToolBar() {
if(getPageComponent() instanceof AbstractEditor){
AbstractEditor editor = (AbstractEditor)getPageComponent();
return editor.getEditorToolBar();
}
return null;
}
/**
* Returns the view specific menubar if the underlying view
* implementation supports it.
*/
protected JComponent createViewMenuBar() {
if(getPageComponent() instanceof AbstractEditor){
AbstractEditor editor = (AbstractEditor)getPageComponent();
return editor.getEditorMenuBar();
}
return null;
}
}