package app.create.rpg;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import app.create.rpg.file.CachedFile;
import app.create.rpg.file.CachedRMData;
import app.create.rpg.file.CachedScriptFile;
import java.io.File;
import java.util.Collection;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import android.util.Log;
public class ActivityProject extends ActionBarActivity {
private CustomPagerAdapter mAdapter;
private String mDirPath;
public Map<String, CachedFile> mCache = new HashMap<String, CachedFile>();
@SuppressWarnings("unchecked")
public <T extends CachedFile> T require(CachedFile.User user, String name) {
try {
String key = name.toLowerCase(Locale.US);
CachedFile f = mCache.get(key);
if (f == null) {
File file = new File(mDirPath, "/Data/" + name + ".rxdata");
if (key.equals("scripts"))
f = new CachedScriptFile(file, this);
else
f = new CachedRMData(file, this, name);
mCache.put(key, f);
}
f.registerUser(user);
return (T) f;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPause() {
super.onPause();
Collection<CachedFile> col = mCache.values();
for (CachedFile f : col)
f.stopWatching();
}
@Override
protected void onResume() {
super.onResume();
Collection<CachedFile> col = mCache.values();
for (CachedFile f : col)
f.startWatching();
}
public CustomPagerAdapter getAdapter() {
return mAdapter;
}
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.project);
final ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
mAdapter = new CustomPagerAdapter(this);
final Intent intent = getIntent();
mDirPath = intent.getStringExtra(ActivityFileDialog.FILE_PATH);
restoreState(state);
}
@Override
public void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
restoreState(state);
}
protected void restoreState(Bundle state) {
if (state == null) return;
mDirPath = state.getString("FILE_PATH");
}
@Override
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putString("FILE_PATH", mDirPath);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.menu_project, menu);
return true;
}
public String getProjectDir() {
return mDirPath;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// ActionBar bar = getSupportActionBar();
try {
switch (item.getItemId()) {
case R.id.menu_materialbase:
mAdapter.addPage(new FragmentMaterialBase.MyCreator(), true);
break;
case R.id.menu_actors:
mAdapter.addPage(new FragmentActors.MyCreator(), true);
break;
default:
return super.onOptionsItemSelected(item);
}
} catch (Throwable e) {
Log.e("CreateRPG", "Weird exception in ActivityProject.onOp~~~ed", e);
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT);
} finally {
Toast.makeText(this, "yo", Toast.LENGTH_SHORT);
}
return true;
}
}