/*
Copyright 2008-2010 Gephi
Authors : Mathieu Bastian <mathieu.bastian@gephi.org>
Website : http://www.gephi.org
This file is part of Gephi.
Gephi is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
Gephi is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Gephi. If not, see <http://www.gnu.org/licenses/>.
*/
package org.gephi.visualization.swing;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.text.NumberFormat;
import javax.media.opengl.GLJPanel;
import org.gephi.visualization.GraphLimits;
import org.gephi.visualization.VizController;
/**
*
* @author Mathieu Bastian
*/
public class GraphPanel extends GraphDrawableImpl {
private GLJPanel gljPanel;
private NumberFormat formatter;
public GraphPanel() {
super();
formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(1);
//Init GLJPanel as the drawable
gljPanel = new GLJPanel(getCaps(), null, null) {
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
render2DBackground(g2d);
super.paintComponent(g2d);
render2DForeground(g2d);
}
};
//gljPanel.setOpaque(false);
graphComponent = gljPanel;
gljPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
super.initDrawable(gljPanel);
//Basic panel init
gljPanel.setLayout(null);
}
public GLJPanel getPanel() {
return gljPanel;
}
private void render2DBackground(Graphics2D g) {
}
private void render2DForeground(Graphics2D g) {
if (vizController.getVizConfig().isShowFPS()) {
g.setColor(Color.LIGHT_GRAY);
String fpsRound = formatter.format(fps);
g.drawString(fpsRound, 10, 15);
}
GraphLimits limits = VizController.getInstance().getLimits();
int[] xP = new int[4];
xP[0] = limits.getMinXviewport();
xP[1] = limits.getMinXviewport();
xP[2] = limits.getMaxXviewport();
xP[3] = limits.getMaxXviewport();
int[] yP = new int[4];
yP[0] = viewport.get(3) - limits.getMinYviewport();
yP[1] = viewport.get(3) - limits.getMaxYviewport();
yP[2] = viewport.get(3) - limits.getMaxYviewport();
yP[3] = viewport.get(3) - limits.getMinYviewport();
g.setColor(Color.red);
g.drawPolygon(xP, yP, 4);
}
}