package de.lighti;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import de.lighti.components.DotalysMenuBar;
import de.lighti.components.map.MapComponent;
import de.lighti.components.match.GameStatisticsComponent;
import de.lighti.components.player.histogram.HistogramComponent;
import de.lighti.components.player.statistics.PlayerComponent;
import de.lighti.io.DataImporter;
import de.lighti.model.AppState;
import de.lighti.model.Statics;
public class Dotalys2App extends JFrame {
private final AppState appState;
/**
*
*/
private static final long serialVersionUID = -5920990846685808741L;
static {
try {
UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
UIManager.put( "Panel.background", Color.WHITE );
UIManager.put( "Slider.background", Color.WHITE );
UIManager.put( "SplitPane.background", Color.WHITE );
UIManager.put( "OptionPane.background", Color.WHITE );
}
catch (final Exception e) {
// Don't care
}
}
private JTabbedPane mainView;
private HistogramComponent histogramComponent;
private PlayerComponent playerComponent;
private MapComponent mapComponent;
public Dotalys2App() {
super( Statics.APPLICATION_TITLE );
appState = new AppState();
parseLocalisedNames();
// setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
// setSize( new Dimension( 900, 700 ) );
// setResizable( false );
// final JComponent com = getMainView();
// com.setPreferredSize( getContentPane().getPreferredSize() );
// getContentPane().add( com, BorderLayout.CENTER );
// // pack();
// setJMenuBar( new DotalysMenuBar( this ) );
}
public AppState getAppState() {
return appState;
}
public HistogramComponent getHistogramComponent() {
if (histogramComponent == null) {
histogramComponent = new HistogramComponent( appState );
}
return histogramComponent;
}
public JComponent getMainView() {
if (mainView == null) {
mainView = new JTabbedPane() {
@Override
public void setEnabled( boolean enabled ) {
super.setEnabled( enabled );
//The player box which is visible at start is the only one we need to send an extra notification to
getHistogramComponent().setEnabled( enabled );
}
};
mainView.addTab( Statics.PLAYER_HISTOGRAMS, getHistogramComponent() );
mainView.addTab( Statics.PLAYER_STATISTICS, getPlayerComponent() );
mainView.addTab( Statics.MAP_EVENTS, getMapComponent() );
mainView.setEnabled( false );
final GameStatisticsComponent gsc = new GameStatisticsComponent( getAppState() );
mainView.addTab( Statics.MATCH_ANALYSIS, gsc );
mainView.setBorder( BorderFactory.createEmptyBorder( 5, 5, 5, 5 ) );
}
return mainView;
}
public MapComponent getMapComponent() {
if (mapComponent == null) {
mapComponent = new MapComponent( appState );
}
return mapComponent;
}
public PlayerComponent getPlayerComponent() {
if (playerComponent == null) {
playerComponent = new PlayerComponent( appState );
}
return playerComponent;
}
private void parseLocalisedNames() {
DataImporter.readLocalisedHeroNames( getClass().getResourceAsStream( "heroes.xml" ), appState );
DataImporter.readHeroIds( getClass().getResourceAsStream( "heroes.xml" ), appState );
DataImporter.readLocalisedAbilityNames( getClass().getResourceAsStream( "abilities.xml" ), appState );
}
}