/** * パーツの色ダイアログが変更されたことにより、同一の他のカラーグループのレイヤーのカラーダイアログの設定値をコピーする.<br> * (色ダイアログのパラメータ変更により呼び出される.)<br> * * @param partsCategory パーツカテゴリ * @param eventSourceLayer 変更もとのレイヤー * @param sourceColorDialog 変更されたカラーダイアログ */ public void syncColorGroup( PartsCategory partsCategory, Layer eventSourceLayer, ColorDialog sourceColorDialog) { if (partsCategory == null || sourceColorDialog == null) { throw new IllegalArgumentException(); } // 変更もと ArrayList<Layer> syncSources = new ArrayList<Layer>(); if (eventSourceLayer != null) { if (sourceColorDialog.isSyncColorGroup(eventSourceLayer)) { syncSources.add(eventSourceLayer); } } else { for (Layer layer2 : partsCategory.getLayers()) { if (sourceColorDialog.isSyncColorGroup(layer2)) { syncSources.add(layer2); } } } // 変更もとのレイヤーのカラーグループを他のレイヤーにも適用する. for (Layer sourceLayer : syncSources) { ColorGroup sourceColorGroup = sourceColorDialog.getColorGroup(sourceLayer); if (sourceColorGroup != null && sourceColorGroup.isEnabled()) { ColorConvertParameter param = sourceColorDialog.getColorConvertParameter(sourceLayer); // 他のパネルに適用する for (ColorDialog targetColorDialog : colorDialogs) { for (Layer targetLayer : targetColorDialog.getPartsCategory().getLayers()) { if (!targetLayer.equals(sourceLayer)) { if (ColorGroup.equals( targetColorDialog.getColorGroup(targetLayer), sourceColorGroup)) { if (targetColorDialog.isSyncColorGroup(targetLayer)) { targetColorDialog.setColorConvertParameter(targetLayer, param); } } } } } // 色ダイアログで選択中でない有効なパーツも含めてパーツカラーを更新する. for (PartsCategory targetPartsCategory : partsSelectionMrg.getAllCategories()) { Collection<PartsIdentifier> selectedPartss = partsSelectionMrg.getSelectedPartsIdentifiers(targetPartsCategory); for (PartsIdentifier partsIdentifier : selectedPartss) { // カラーダイアログで選択されていない他のパーツも含めてパーツカラーを更新する. PartsColorInfo partsColorInfo = partsColorMrg.getPartsColorInfo(partsIdentifier, true); for (Map.Entry<Layer, ColorInfo> entry : partsColorInfo.entrySet()) { ColorInfo colorInfo = entry.getValue(); if (ColorGroup.equals(sourceColorGroup, colorInfo.getColorGroup())) { if (colorInfo.isSyncColorGroup()) { colorInfo.setColorParameter(param); } } } } } } } }
protected void onChangeColorGroup( ColorDialog destColorDialog, Layer layer, ColorGroup colorGroup) { if (destColorDialog == null || layer == null || colorGroup == null) { throw new IllegalArgumentException(); } for (ColorDialog colorDlg : colorDialogs) { for (Layer srcLayer : colorDlg.getPartsCategory().getLayers()) { if (!srcLayer.equals(layer)) { if (ColorGroup.equals(colorGroup, colorDlg.getColorGroup(srcLayer)) && colorDlg.isSyncColorGroup(srcLayer)) { ColorConvertParameter param = colorDlg.getColorConvertParameter(srcLayer); destColorDialog.setColorConvertParameter(layer, param); break; } } } } }