package guis; import org.eclipse.swt.SWT; import org.eclipse.swt.awt.SWT_AWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import core.DungeonConstants; import core.DungeonGenerator; import core.GameState; import core.GridMapper; import core.JSVGScrollPane; import core.JSVGCanvas; public class DungeonViewer { private Display m_display; private Shell m_shell; private final Composite m_view; private final Composite m_embeddedView; private final JSVGCanvas svgCanvas = new JSVGCanvas(); private HomeWindow m_hw; public DungeonViewer(HomeWindow hw, int sizeSelection, double density, int squareSize) { this.m_hw = hw; m_display = Display.getCurrent(); if (m_display == null ) { m_display = new Display(); } m_shell = new Shell(m_display); Image logo = new Image(m_display, "images/bnb_logo.gif"); m_shell.setImage(logo); m_shell.setText("Meta D&D " ); m_shell.setLayout(new GridLayout(3, false)); m_shell.setText("Dungeon Viewer"); m_view = new Composite(m_shell, SWT.NONE); m_embeddedView = new Composite(m_view, SWT.EMBEDDED); m_view.setLayoutData(new GridData(GridData.FILL_BOTH)); m_view.setLayout(new GridLayout(1, true)); GridLayout gridLayout = new GridLayout(1, false); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); m_embeddedView.setLayoutData(gridData); m_embeddedView.setLayout(gridLayout); DungeonGenerator rdg = new DungeonGenerator(sizeSelection, density); rdg.GenerateDungeon(); rdg.printDungeon(true); GridMapper gm = new GridMapper(DungeonConstants.SAVEDDUNGEONSDIR.toString() + "//generatedDungeon.bnb", squareSize); gm.generateSVG(); String toSet = "file:///"; toSet += DungeonConstants.SAVEDDUNGEONSDIR.toString() + "//generatedDungeon.svg"; svgCanvas.setURI(toSet); configureContent(); run(); } public DungeonViewer(String svgToLoad) { m_display = Display.getCurrent(); if (m_display == null ) { m_display = new Display(); } m_shell = new Shell(m_display); Image logo = new Image(m_display, "images/bnb_logo.gif"); m_shell.setImage(logo); m_shell.setText("Meta D&D " ); m_shell.setSize(1000, 1000); m_shell.setLayout(new GridLayout(3, false)); m_shell.setText("Dungeon Viewer"); m_view = new Composite(m_shell, SWT.NONE); m_embeddedView = new Composite(m_view, SWT.EMBEDDED); m_view.setLayoutData(new GridData(GridData.FILL_BOTH)); m_view.setLayout(new GridLayout(1, true)); GridLayout gridLayout = new GridLayout(1, false); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); m_embeddedView.setLayoutData(gridData); m_embeddedView.setLayout(gridLayout); svgCanvas.setURI(svgToLoad); configureContent(); run(); } private void configureContent() { m_shell.setSize(GameState.DEFAULT_WIDTH, GameState.DEFAULT_HEIGHT); ///////////////////DUNGEON VIEWER////////////////////////// // embed the swing element in the swt composite java.awt.Frame fileTableFrame = SWT_AWT.new_Frame(m_embeddedView); java.awt.Panel panel = new java.awt.Panel(new java.awt.BorderLayout()); JSVGScrollPane jsvgsp = new JSVGScrollPane(svgCanvas); fileTableFrame.add(panel); panel.add(jsvgsp); new MenuBar(m_shell, m_hw, GameState.PAGE.DungeonViewerScreen); ///////////////////DUNGEON VIEWER////////////////////////// } public void run() { m_shell.open(); while (!m_shell.isDisposed()) { if (!m_display.readAndDispatch()) { m_display.sleep(); } } } }