package com.kolakcc.loljclient.controller; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import java.util.concurrent.ExecutionException; import javax.swing.SwingWorker; import com.gvaneyck.rtmp.encoding.TypedObject; import com.kolakcc.loljclient.StartupClass; import com.kolakcc.loljclient.model.Champion; import com.kolakcc.loljclient.model.Item; import com.kolakcc.loljclient.model.LoggedInSummoner; import com.kolakcc.loljclient.model.SummonerSpell; import com.kolakcc.loljclient.util.GameClient; import com.kolakcc.loljclient.view.MainView; import com.kolakcc.loljclient.view.ui.LocalizedJButton; public class MainController extends KolaController implements ActionListener { MainView view; SwingWorker<TypedObject, String> requestWorker; SwingWorker<Object, String> assetLoaderWorker; public MainController() { this.initializeWorkers(); this.view = new MainView(); this.setView(this.view); this.view.customGameButton.addActionListener(this); this.view.profileButton.addActionListener(this); this.view.championsButton.addActionListener(this); this.view.storeButton.addActionListener(this); this.view.launch.addActionListener(this); this.assetLoaderWorker.execute(); } @Override public void actionPerformed(ActionEvent e) { switch (((LocalizedJButton) e.getSource()).getKey()) { case "champions": StartupClass.openChampions(); break; case "profile": StartupClass.openProfile(); break; case "custom games": StartupClass.openCustomGames(); break; case "store": StartupClass.openStore(); break; case "launch lol": GameClient.start(); break; } } protected void initializeWorkers() { this.requestWorker = new SwingWorker<TypedObject, String>() { public TypedObject doInBackground() throws Exception { int id = StartupClass.Client.invoke("clientFacadeService", "getLoginDataPacketForUser", new Object[] {}); return StartupClass.Client.getResult(id).getTO("data") .getTO("body"); } public void done() { try { TypedObject summoner = this.get(); LoggedInSummoner.populateData(summoner); MainController.this.view.RPBalance .setText(String.valueOf(LoggedInSummoner.RPBalance)); MainController.this.view.IPBalance .setText(String.valueOf(LoggedInSummoner.IPBalance)); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } }; this.assetLoaderWorker = new SwingWorker<Object, String>() { protected Object doInBackground() throws Exception { //TODO: localize this this.publish("Loading champions..."); Champion.initializeChampions(); this.publish("Loading items..."); Item.initializeItems(); this.publish("Loading summoner spells..."); SummonerSpell.initializeSpells(); MainController.this.requestWorker.execute(); return null; } protected void process(List<String> publishedInfo) { for (String listItem : publishedInfo) { System.out.println(listItem); } } }; } }