* 現在表示中もしくは選択中のプロファイル.<br>
* 新規の場合はnull
*/
- protected CharacterData current;
+ private final CharacterData targetCd;
private CardLayout mainPanelLayout;
*/
public ImportWizardDialog(JFrame parent, CharacterData current) {
super(parent, true);
- initComponent(parent, current);
+ this.targetCd = current;
+ if (targetCd != null && !targetCd.getDocBase().getScheme().equals("file")) {
+ throw new IllegalArgumentException("ファイルベース以外のキャラクターデータにインポートできません");
+ }
+ if (targetCd != null && !targetCd.isValid()) {
+ throw new IllegalArgumentException("妥当でないキャラクターデータにはインポートできません");
+ }
+ initComponent();
}
/**
*/
public ImportWizardDialog(JDialog parent, CharacterData current) {
super(parent, true);
- initComponent(parent, current);
+ this.targetCd = current;
+ if (targetCd != null && !targetCd.getDocBase().getScheme().equals("file")) {
+ throw new IllegalArgumentException("ファイルベース以外のキャラクターデータにインポートできません");
+ }
+ if (targetCd != null && !targetCd.isValid()) {
+ throw new IllegalArgumentException("妥当でないキャラクターデータにはインポートできません");
+ }
+ initComponent();
+ }
+
+ /**
+ * インポート先のキャラクターデータを返す。新規の場合はnull
+ * @return インポート先、新規の場合はnull
+ */
+ public CharacterData getTargetCharacterData() {
+ if (targetCd != null && !targetCd.getDocBase().getScheme().equals("file")) {
+ throw new IllegalStateException("ファイルベース以外のキャラクターデータにインポートできません: " + targetCd);
+ }
+ return targetCd;
}
/**
/**
* ウィザードダイアログのコンポーネントを初期化します.<br>
* currentがnullの場合は新規インポート、そうでない場合は更新インポートとります。
- *
- * @param parent
- * 親コンテナ
- * @param current
- * インポート対象プロファイル、新規の場合はnull
*/
- private void initComponent(Component parent, CharacterData current) {
- this.current = current;
+ private void initComponent() {
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
.getLocalizedProperties(STRINGS_RESOURCE);
// タイトル
- if (current == null) {
+ if (targetCd == null) {
setTitle(strings.getProperty("title.new"));
} else {
setTitle(strings.getProperty("title.update"));
// HiDpi環境でのスケールを考慮したウィンドウサイズに補正する
dim = scaleSupport.manualScaled(dim);
setSize(dim);
- setLocationRelativeTo(parent);
+ setLocationRelativeTo(getParent());
mainPanelLayout.first(mainPanel);
updateBtnPanelState();
int exitCode;
CharacterData importedCharacterData;
try {
- if (current == null) {
+ if (targetCd == null) {
// 新規作成
importedCharacterData = createNewProfile();
exitCode = EXIT_PROFILE_CREATED;
} else {
// 更新
- importedCharacterData = updateProfile();
+ importedCharacterData = updateProfile(targetCd.duplicateBasicInfo());
exitCode = EXIT_PROFILE_UPDATED;
}
} finally {
* @throws IOException
* 失敗
*/
- protected CharacterData updateProfile() throws IOException {
- if (current == null || !current.isValid()) {
- throw new IllegalStateException("current profile is not valid. :" + current);
- }
-
+ protected CharacterData updateProfile(CharacterData characterData) throws IOException {
CharacterDataPersistent persist = CharacterDataPersistent.getInstance();
- CharacterData characterData = current.duplicateBasicInfo(); // 現在のもの。(インポートしたものではない)
-
boolean imported = false;
boolean modCharacterDef = false;
boolean modFavories = false;
// キャラクター定義の更新
if (modCharacterDef) {
persist.updateProfile(characterData); // キャラクター定義の構造に変化なし
- current.setDescription(characterData.getDescription());
+ targetCd.setDescription(characterData.getDescription()); // 現在保持しているCdの説明文は更新しておく(念のため)
}
// お気に入りの更新
if (modFavories) {
}
try {
- parent.importModel.openImportSource(importArchive, parent.current);
+ parent.importModel.openImportSource(importArchive, parent.getTargetCharacterData());
// ワーカースレッドでアーカイブの読み込みを行う.
Worker<Void> worker = new Worker<Void>() {
.getLocalizedProperties(ImportWizardDialog.STRINGS_RESOURCE);
// 呼び出しもと情報
- CharacterData current = parent.current;
+ CharacterData current = parent.getTargetCharacterData();
// キャラクター定義情報
CharacterData cd = parent.importModel.getCharacterData();
@Override
public boolean isReadyFinish() {
if (!isImportPartsImages() && !isImportPreset()) {
- if ((parent != null && parent.current == null)
+ if ((parent != null && parent.getTargetCharacterData() == null)
|| isImportSampleImage()) {
// 新規プロファイル作成か、サンプルイメージの更新のみで
// イメージもパーツセットもいらなければ、ただちに作成可能.
// インポート対象のプロファイルサイズ
CharacterData characterData;
- if (parent.current == null) {
+ if (parent.getTargetCharacterData() == null) {
// 新規インポート
characterData = parent.importModel.getCharacterData();
} else {
// 更新インポート
- characterData = parent.current;
+ characterData = parent.getTargetCharacterData();
}
+
int profileWidth = 0;
int profileHeight = 0;
if (characterData != null) {
actSort.setEnabled(enabled);
actSortByTimestamp.setEnabled(enabled);
- CharacterData currentProfile = parent.current;
+ CharacterData currentProfile = parent.getTargetCharacterData();
Collection<PartsImageContent> partsImageContents = parent.importModel.getPartsImageContents();
PartsManageData partsManageData = parent.importModel.getPartsManageData();
partsTableModel.initModel(partsImageContents, partsManageData, currentProfile);
}
}
- String defaultPartsSetId;
- CharacterData presetImportTarget;
- boolean selectAllPreset;
- if (parent.current == null) {
- presetImportTarget = null;
+ final String defaultPartsSetId;
+ final CharacterData presetImportTarget = parent.getTargetCharacterData();
+ final boolean selectAllPreset;
+ if (presetImportTarget == null) { // 新規の場合
CharacterData cd = parent.importModel.getCharacterData();
if (cd != null) {
defaultPartsSetId = cd.getDefaultPartsSetId();
}
selectAllPreset = true; // 新規プロファイルの場合はプリセットをインポートする
} else {
- presetImportTarget = parent.current;
defaultPartsSetId = null; // 既存の場合はデフォルトのパーツセットであるかは表示する必要ないのでnullにする.
- selectAllPreset = (parent.current.getPartsCount() == 0); // パーツが空の場合はプリセットをインポートする
+ selectAllPreset = (presetImportTarget.getPartsCount() == 0); // パーツが空の場合はプリセットをインポートする
}
parent.importPresetSelectPanel.initModel(partsSets, defaultPartsSetId, presetImportTarget, selectAllPreset);