/** * Get list of each asset to be replaced, and the shots it's in. * * @return * @throws PipelineException */ private boolean getShotsUsingAssets() throws PipelineException { ArrayList<ArchiveInfo> archive = mclient.archiveQuery(shotPattern, null); logLine("Looking for shots using lo-res assets."); for (ArchiveInfo curArc : archive) { String name = curArc.getName(); VersionID vid = curArc.getVersionID(); TreeSet<VersionID> allVers = mclient.getCheckedInVersionIDs(name); if (!vid.equals(allVers.last())) continue; NodeVersion ver = mclient.getCheckedInVersion(name, vid); Set<String> srcs = ver.getSourceNames(); for (String loResAsset : pAssetManager.keySet()) { if (srcs.contains(loResAsset)) { // TODO chec if latest. logLine("\t" + getShortName(loResAsset) + ": " + getShortName(name)); AssetInfo tempInfo = pAssetManager.get(loResAsset); if (!tempInfo.getLoHiResShots().containsKey(name)) tempInfo.getLoHiResShots().put(name, null); } // end if } // end for } // end for logLine("Looking for shots using hi-res assets"); /* - Populate lo-res */ for (ArchiveInfo curArc : archive) { String name = curArc.getName(); VersionID vid = curArc.getVersionID(); TreeSet<VersionID> allVers = mclient.getCheckedInVersionIDs(name); if (!vid.equals(allVers.last())) continue; NodeVersion ver = mclient.getCheckedInVersion(name, vid); Set<String> srcs = ver.getSourceNames(); for (String updateAsset : pAssetManager.keySet()) { String hiResAsset = updateAsset.replace(lr, ""); if (srcs.contains(hiResAsset)) { logLine("\t" + getShortName(hiResAsset) + ": " + getShortName(name)); AssetInfo tempInfo = pAssetManager.get(updateAsset); String loRes = tempInfo.getMatchingLoResShot(name); if (loRes == null) { logLine( "!!!\nWARNING:" + getShortName(hiResAsset) + " is used in the " + getShortName(name) + " node which has no matching lo-res model in an anim node." + " So it will not be changed\n!!!"); continue; } tempInfo.getLoHiResShots().put(loRes, name); } // end if } // end for } // end for(ArchiveInfo) logLine(""); for (String updateAsset : potentialUpdates) { TreeMap<String, String> shots = pAssetManager.get(updateAsset).getLoHiResShots(); if (shots.isEmpty()) { logLine(getShortName(updateAsset) + " is not used in any shots"); pAssetManager.remove(updateAsset); } for (String loRes : shots.keySet()) { if (shots.get(loRes) == null) logLine( getShortName(updateAsset) + " is in a hi-res shot, " + getShortName(loRes) + ", but doesn't have a matching hi-res" + "model in the lgt node."); } } if (pAssetManager.isEmpty()) return false; return true; } // end getShotsUsingAssets
/** * Present a GUI allowing the user to select shots in which each previously selected asset should * be updated. * * @return * @throws PipelineException */ private String confirmShotsToUpdate() throws PipelineException { /* DO GUI DRAWING STUFF*/ JScrollPane scroll = null; { Box ibox = new Box(BoxLayout.Y_AXIS); if (pAssetManager.isEmpty()) { Component comps[] = UIFactory.createTitledPanels(); JPanel tpanel = (JPanel) comps[0]; JPanel vpanel = (JPanel) comps[1]; tpanel.add(Box.createRigidArea(new Dimension(sTSize - 7, 0))); vpanel.add(Box.createHorizontalGlue()); ibox.add(comps[2]); } else { for (String assetName : pAssetManager.keySet()) { String name = getShortName(assetName); AssetInfo info = pAssetManager.get(assetName); Component comps[] = UIFactory.createTitledPanels(); JPanel tpanel = (JPanel) comps[0]; JPanel vpanel = (JPanel) comps[1]; String title = "Replace " + name + " with "; title += getShortName(info.getNewAsset()); JDrawer shotList = new JDrawer(title, (JComponent) comps[2], true); ibox.add(shotList); for (String shot : info.getLoHiResShots().keySet()) { String shortShot = getShortName(shot); JBooleanField field = UIFactory.createTitledBooleanField( tpanel, shortShot, sVSize, vpanel, sTSize, "Whether to replace this asset source for the node."); field.setName(shot); field.setValue(true); if (!pSubstituteFields.containsKey(assetName)) pSubstituteFields.put(assetName, new LinkedList<JBooleanField>()); pSubstituteFields.get(assetName).add(field); UIFactory.addVerticalSpacer(tpanel, vpanel, 3); } } } { JPanel spanel = new JPanel(); spanel.setName("Spacer"); spanel.setMinimumSize(new Dimension(sTSize + sVSize, 7)); spanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE)); spanel.setPreferredSize(new Dimension(sTSize + sVSize, 7)); ibox.add(spanel); } { scroll = new JScrollPane(ibox); scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); Dimension size = new Dimension(sTSize + sVSize + 52, 300); scroll.setMinimumSize(size); scroll.setPreferredSize(size); scroll.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE); } } /* query the user */ JToolDialog diag = new JToolDialog("Update Assets Per Shot", scroll, "Confirm"); diag.setVisible(true); /* Process User Input */ if (diag.wasConfirmed()) { for (String asset : pSubstituteFields.keySet()) { for (JBooleanField field : pSubstituteFields.get(asset)) { Boolean bUpdate = field.getValue(); if ((bUpdate == null) || !bUpdate) { pAssetManager.get(asset).getLoHiResShots().remove(field.getName()); // logLine("\tRemoving: "+ getShortName(field.getName()) // TODO +" from list for "+ getShortName(asset)); } } } return ": Modifying Nodes..."; } return null; } // end confirmShotsToUpdate