/* * Copyright (c) 2011-2015, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * * 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 boofcv.app.calib; import boofcv.gui.image.ImagePanel; import javax.swing.*; import javax.swing.border.BevelBorder; import java.awt.*; import java.awt.image.BufferedImage; /** * @author Peter Abeles */ public class AssistedCalibrationGui extends JPanel { JLabel messageLabel; ImagePanel imagePanel; BufferedImage workImage; CalibrationInfoPanel infoPanel; public AssistedCalibrationGui( Dimension dimension ) { this(dimension.width,dimension.height); } public AssistedCalibrationGui( int imageWidth , int imageHeight ) { // super(new GridLayout(2,1)); super(new BorderLayout()); // JLabel panelMessage = new JLabel(); // panelMessage.setBorder(new BevelBorder(BevelBorder.LOWERED)); messageLabel = new JLabel(); messageLabel.setBorder(new BevelBorder(BevelBorder.LOWERED)); messageLabel.setFont(new Font("Serif", Font.BOLD, 22)); messageLabel.setText("Initial text string to fill it up"); messageLabel.setMinimumSize(new Dimension(imageWidth,30)); messageLabel.setPreferredSize(new Dimension(imageWidth, 30)); infoPanel = new CalibrationInfoPanel(); imagePanel = new ImagePanel(imageWidth,imageHeight); add(messageLabel,BorderLayout.NORTH); add(imagePanel,BorderLayout.CENTER); add(infoPanel,BorderLayout.EAST); workImage = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_BGR); } public void setMessage( final String message ) { if( message == null ) return; SwingUtilities.invokeLater(new Runnable() { @Override public void run() { messageLabel.setText(message); messageLabel.repaint(); // messageLabel.invalidate(); } }); } public CalibrationInfoPanel getInfoPanel() { return infoPanel; } public synchronized void setImage( BufferedImage image ) { workImage.createGraphics().drawImage(image,0,0,image.getWidth(),image.getHeight(),null); imagePanel.setBufferedImage(workImage); } }