Hi All,
While full screen window is opened in Solaris operating system, It shows
full screen window along with its parent window. Parent window (new
JWindow(ExFrame.this)) that used to create JWindow is always focused. So it
always shows 2 windows.
This is not happening in windows. So can anyone please tell how to resolve
the problem or please provide the work around to resolve the problem.
Herewith I have attached my sample program. This would be helpful to
reproduce the problem.
import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JWindow;
import org.apache.batik.swing.JSVGCanvas;
import org.w3c.dom.svg.SVGDocument;
import org.w3c.dom.DOMImplementation;
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
import org.w3c.dom.events.EventTarget;
import org.w3c.dom.svg.SVGSVGElement;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.Event;
import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
import org.w3c.dom.DOMException;
import org.w3c.dom.Element;
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import javax.swing.AbstractAction;
class ExFrame extends JFrame{
static String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
JPanel jPanel1 = new JPanel();
JButton jButton1 = new JButton();
JSVGCanvas svgCanvas = new JSVGCanvas();
protected JWindow window;
public final static String FULL_SCREEN_ACTION = "FullScreenAction";
public ExFrame() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
ExFrame frame = new ExFrame();
frame.pack();
frame.setVisible(true);
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(new BorderLayout());
jPanel1.add(jButton1);
svgCanvas.setPreferredSize(new Dimension(600, 600));
svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
DOMImplementation impl =
SVGDOMImplementation.getDOMImplementation();
SVGDocument doc = (SVGDocument)impl.createDocument(svgNS, "svg",
null);
svgCanvas.setDocument(doc);
javax.swing.ActionMap map = svgCanvas.getActionMap();
map.put(FULL_SCREEN_ACTION, new FullScreenAction());
javax.swing.InputMap imap =
svgCanvas.getInputMap(JComponent.WHEN_FOCUSED);
KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0);
imap.put(key, FULL_SCREEN_ACTION);
registerListeners();
this.getContentPane().add(svgCanvas, java.awt.BorderLayout.CENTER);
this.getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
jButton1.setText("Button");
}
public void registerListeners() {
svgCanvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
public void gvtRenderingPrepare(GVTTreeRendererEvent e) {
}
public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
resizeCircle();
}
});
SVGDocument doc = svgCanvas.getSVGDocument();
SVGSVGElement svgRoot = doc.getRootElement();
EventTarget t = (EventTarget)svgRoot;
t.addEventListener("SVGLoad", new OnLoadAction(), false);
}
public class OnLoadAction implements EventListener {
public void handleEvent(Event evt) {
}
}
private void resizeCircle() throws DOMException {
try {
SVGDocument doc = svgCanvas.getSVGDocument();
Element rect =
doc.createElementNS(SVGDOMImplementation.SVG_NAMESPACE_URI, "rect");
rect.setAttributeNS(null, "id", "rec");
rect.setAttributeNS(null, "x", "250");
rect.setAttributeNS(null, "y", "250");
rect.setAttributeNS(null, "width", "75");
rect.setAttributeNS(null, "height", "75");
rect.setAttributeNS(null, "style", "fill:red; stroke:green");
doc.getRootElement().appendChild(rect);
} catch (Exception e) {}
}
public class FullScreenAction extends AbstractAction {
public FullScreenAction() {}
public void actionPerformed(ActionEvent e) {
if (window == null || !window.isVisible()) {
if (window == null) {
window = new JWindow(ExFrame.this);
Dimension size =
Toolkit.getDefaultToolkit().getScreenSize();
window.setSize(size);
}
// Go to full screen in JWindow)
ExFrame.this.remove(svgCanvas);
window.getContentPane().add(svgCanvas);
window.setVisible(true);
window.toFront();
svgCanvas.requestFocus();
} else {
// Go back to JSVGViewerFrame display
ExFrame.this.remove(svgCanvas);
ExFrame.this.add(svgCanvas, BorderLayout.CENTER);
window.setVisible(false);
}
}
}
}
Thanks,
Sudhakar
--
View this message in context:
http://www.nabble.com/Problem-with-SVG-Browser-full-screen-window-in-solaris-tf2253140.html#a6249200
Sent from the Batik - Users forum at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]