/** * Copyright 2010 JBoss Inc * * 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.drools.planner.examples.common.swingui; import java.awt.Dimension; import java.awt.Rectangle; import javax.swing.JPanel; import javax.swing.JViewport; import javax.swing.Scrollable; import org.drools.planner.examples.common.business.SolutionBusiness; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Geoffrey De Smet */ public abstract class SolutionPanel extends JPanel implements Scrollable { private static final Dimension PREFERRED_SCROLLABLE_VIEWPORT_SIZE = new Dimension(800, 500); protected final transient Logger logger = LoggerFactory.getLogger(getClass()); protected WorkflowFrame workflowFrame; protected SolutionBusiness solutionBusiness; public void setWorkflowFrame(WorkflowFrame workflowFrame) { this.workflowFrame = workflowFrame; } public void setSolutionBusiness(SolutionBusiness solutionBusiness) { this.solutionBusiness = solutionBusiness; } public abstract void resetPanel(); public Dimension getPreferredScrollableViewportSize() { return PREFERRED_SCROLLABLE_VIEWPORT_SIZE; } public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { return 20; } public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { return 20; } public boolean getScrollableTracksViewportWidth() { if (getParent() instanceof JViewport) { return (((JViewport) getParent()).getWidth() > getPreferredSize().width); } return false; } public boolean getScrollableTracksViewportHeight() { if (getParent() instanceof JViewport) { return (((JViewport) getParent()).getHeight() > getPreferredSize().height); } return false; } }