import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
-import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.List;
import java.util.SortedSet;
import jp.sfjp.jindolf.data.Talk;
import jp.sfjp.jindolf.data.Village;
import jp.sfjp.jindolf.dxchg.CsvExporter;
+import jp.sfjp.jindolf.dxchg.Hon5;
import jp.sfjp.jindolf.dxchg.WebIPCDialog;
+import jp.sfjp.jindolf.dxchg.WolfBBS;
import jp.sfjp.jindolf.editor.TalkPreview;
import jp.sfjp.jindolf.glyph.AnchorHitEvent;
import jp.sfjp.jindolf.glyph.AnchorHitListener;
private static final String ERRFORM_LAF =
"このLook&Feel[{0}]を生成する事ができません。";
+
private final LandsModel model;
private final WindowManager windowManager;
private final ActionManager actionManager;
topFrame.setDefaultCloseOperation(
WindowConstants.DISPOSE_ON_CLOSE);
topFrame.addWindowListener(new WindowAdapter(){
+ /** {@inheritDoc} */
@Override
public void windowClosed(WindowEvent event){
shutdown();
*/
public void submitBusyStatus(final boolean isBusy, final String message){
Runnable task = new Runnable(){
+ /** {@inheritDoc} */
@Override
public void run(){
if(isBusy) setBusy(true);
submitBusyStatus(true, beforeMsg);
final Runnable busyManager = new Runnable(){
+ /** {@inheritDoc} */
@Override
@SuppressWarnings("CallToThreadYield")
public void run(){
};
Runnable forkLauncher = new Runnable(){
+ /** {@inheritDoc} */
@Override
public void run(){
Executor executor = Executors.newCachedThreadPool();
Village village = browser.getVillage();
if(village == null) return;
- String villageName = village.getVillageName();
-
- StringBuilder url =
- new StringBuilder()
- .append("http://wolfbbs.jp/")
- .append(villageName)
- .append("%C2%BC.html");
-
- WebIPCDialog.showDialog(getTopFrame(), url.toString());
+ String urlTxt = WolfBBS.getCastGeneratorUrl(village);
+ WebIPCDialog.showDialog(getTopFrame(), urlTxt);
return;
}
Village village = browser.getVillage();
if(village == null) return;
- Land land = village.getParentLand();
- ServerAccess server = land.getServerAccess();
-
- URL villageUrl = server.getVillageURL(village);
-
- StringBuilder url = new StringBuilder("http://hon5.com/jinro/");
-
- try{
- url .append("?u=")
- .append(URLEncoder.encode(villageUrl.toString(), "UTF-8"));
- }catch(UnsupportedEncodingException e){
- return;
- }
-
- url.append("&s=1");
-
- WebIPCDialog.showDialog(getTopFrame(), url.toString());
+ String urlTxt = Hon5.getCastGeneratorUrl(village);
+ WebIPCDialog.showDialog(getTopFrame(), urlTxt);
return;
}
--- /dev/null
+/*
+ * Hon5
+ *
+ * License : The MIT License
+ * Copyright(c) 2016 olyutorskii
+ */
+
+package jp.sfjp.jindolf.dxchg;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLEncoder;
+import jp.sfjp.jindolf.data.Land;
+import jp.sfjp.jindolf.data.Village;
+import jp.sfjp.jindolf.net.ServerAccess;
+
+/**
+ * ホの字5 溝の口ランキング(Hon5)に関する諸々。
+ *
+ * @see <a href="http://hon5.com/jinro/">キャスト紹介表ジェネレータ</a>
+ * @see <a href="http://hon5.com/about.php">ホの字5製作委員会</a>
+ */
+public final class Hon5{
+
+ private static final String URL_HON5CAST = "http://hon5.com/jinro/";
+
+
+ /**
+ * 隠しコンストラクタ。
+ */
+ private Hon5(){
+ assert false;
+ throw new AssertionError();
+ }
+
+
+ /**
+ * キャスト紹介ジェネレータ出力のURLを得る。
+ * @param village 村
+ * @return ジェネレータ出力URL
+ */
+ public static String getCastGeneratorUrl(Village village){
+ Land land = village.getParentLand();
+ ServerAccess server = land.getServerAccess();
+ URL villageUrl = server.getVillageURL(village);
+
+ String result = getCastGeneratorUrl(villageUrl);
+
+ return result;
+ }
+
+ /**
+ * キャスト紹介ジェネレータ出力のURLを得る。
+ * @param villageUrl 人狼BBSの村アドレス。
+ * @return ジェネレータ出力URL
+ */
+ public static String getCastGeneratorUrl(URL villageUrl){
+ String vUrlTxt = villageUrl.toString();
+
+ String vcode;
+ try{
+ vcode = URLEncoder.encode(vUrlTxt, "UTF-8");
+ }catch(UnsupportedEncodingException e){
+ assert false;
+ return null;
+ }
+
+ StringBuilder url = new StringBuilder();
+ url.append(URL_HON5CAST);
+ url.append("?u=");
+ url.append(vcode);
+ url.append("&s=1");
+
+ String urlTxt = url.toString();
+ return urlTxt;
+ }
+
+}
import java.util.regex.Pattern;
import jp.sfjp.jindolf.ResourceManager;
import jp.sfjp.jindolf.data.Avatar;
+import jp.sfjp.jindolf.data.Village;
import jp.sourceforge.jindolf.corelib.Destiny;
import jp.sourceforge.jindolf.corelib.GameRole;
return result;
}
+ /**
+ * キャスト紹介ジェネレータ出力のURLを得る。
+ * @param village 村
+ * @return ジェネレータ出力URL
+ */
+ public static String getCastGeneratorUrl(Village village){
+ String villageName = village.getVillageName();
+
+ StringBuilder txt = new StringBuilder();
+ txt.append(WOLFBBS_URL);
+ txt.append(villageName);
+ txt.append("%C2%BC.html");
+
+ String result = txt.toString();
+ return result;
+ }
+
}