/** Code completion. */ private void complete() { if (selected()) return; // find first character final int caret = editor.pos(), startPos = editor.completionStart(); final String prefix = string(substring(editor.text(), startPos, caret)); if (prefix.isEmpty()) return; // find insertion candidates final TreeMap<String, String> tmp = new TreeMap<>(); for (final Entry<String, String> entry : REPLACE.entrySet()) { final String key = entry.getKey(); if (key.startsWith(prefix)) tmp.put(key, entry.getValue()); } if (tmp.size() == 1) { // insert single candidate complete(tmp.values().iterator().next(), startPos); } else if (!tmp.isEmpty()) { // show popup menu final JPopupMenu pm = new JPopupMenu(); final ActionListener al = new ActionListener() { @Override public void actionPerformed(final ActionEvent ae) { complete(ae.getActionCommand().replaceAll("^.*?\\] ", ""), startPos); } }; for (final Entry<String, String> entry : tmp.entrySet()) { final JMenuItem mi = new JMenuItem("[" + entry.getKey() + "] " + entry.getValue()); pm.add(mi); mi.addActionListener(al); } pm.addSeparator(); final JMenuItem mi = new JMenuItem(Text.INPUT + Text.COLS + prefix); mi.setEnabled(false); pm.add(mi); final int[] cursor = rend.cursor(); pm.show(this, cursor[0], cursor[1]); // highlight first entry final MenuElement[] me = {pm, (JMenuItem) pm.getComponent(0)}; MenuSelectionManager.defaultManager().setSelectedPath(me); } }
@Override public void run() { UIMaster master = UIMaster.getInstance(); MasterMgrClient client = master.acquireMasterMgrClient(); long monitorID = -1L; try { DoubleMap<String, VersionID, Long> data = null; long opID = master.beginDialogOp("Calculating File Sizes..."); master.setDialogOpCancelClient(opID, client); monitorID = client.addMonitor(new DialogOpMonitor(opID)); try { data = client.getArchivedSizes(pVersions); } catch (PipelineException ex) { showErrorDialog(ex); } finally { master.endDialogOp(opID, "File Sizes Calculated."); } /* merge existing and new sizes */ if (data != null) { for (String name : pData.keySet()) { TreeMap<VersionID, Long> oversions = pData.get(name); TreeMap<VersionID, Long> versions = data.get(name); if (versions == null) { data.put(name, oversions); } else { for (VersionID vid : oversions.keySet()) { if (versions.get(vid) == null) versions.put(vid, oversions.get(vid)); } } } UpdateSizesTask task = new UpdateSizesTask(data); SwingUtilities.invokeLater(task); } } finally { client.removeMonitor(monitorID); master.releaseMasterMgrClient(client); } }
// client specific public void mergeChanges( ArrayList<TreeMap<Integer, Boolean>> mapArray, ArrayList<TreeMap<Integer, FactoryObject>> dataArray) { if (mapArray.size() == 1) { TreeMap<Integer, Boolean> changeMap = mapArray.get(0); TreeMap<Integer, FactoryObject> changeData = dataArray.get(0); // iterate over all the keys present in changeMap // after this loop is complete, the frameAnimationData map will be accurately synced with the // server copy Set<Integer> t = changeMap.keySet(); for (Integer i : t) { if (changeMap.get(i)) { fos.put(i, changeData.get(i)); } else { fos.remove(i); } } } else { System.out.println("Warning: Corrupt frame data"); } repaint(); }
/** Add the UI components for the given file sequence to the panel. */ private void addFileSeqPanel(FileSeq fseq) { boolean isPresentInWorking = false; if ((pStatus != null) && pStatus.hasLightDetails()) { NodeDetailsLight details = pStatus.getLightDetails(); NodeMod mod = details.getWorkingVersion(); if (mod != null) { if (mod.getPrimarySequence().equals(fseq)) isPresentInWorking = true; else { for (FileSeq sfseq : mod.getSecondarySequences()) { if (sfseq.equals(fseq)) { isPresentInWorking = true; break; } } } } } /* collate the row information */ ArrayList<VersionID> vids = new ArrayList<VersionID>(); ArrayList<FileSeq> singles = new ArrayList<FileSeq>(); TreeSet<FileSeq> enabled = new TreeSet<FileSeq>(); TreeMap<FileSeq, FileState> fstates = new TreeMap<FileSeq, FileState>(); TreeMap<FileSeq, NativeFileInfo> finfos = new TreeMap<FileSeq, NativeFileInfo>(); TreeMap<FileSeq, QueueState> qstates = new TreeMap<FileSeq, QueueState>(); TreeMap<FileSeq, Boolean[]> novel = new TreeMap<FileSeq, Boolean[]>(); { TreeMap<FileSeq, Integer> wsingles = new TreeMap<FileSeq, Integer>(); if ((pStatus != null) && pStatus.hasLightDetails()) { if (isPresentInWorking) { if (pStatus.hasHeavyDetails()) { NodeDetailsHeavy details = pStatus.getHeavyDetails(); FileState[] fs = details.getFileStates(fseq); QueueState[] qs = details.getQueueStates(); NativeFileInfo[] infos = details.getFileInfos(fseq); if ((fs != null) && (qs != null) && (infos != null)) { int wk; for (wk = 0; wk < fs.length; wk++) { FileSeq sfseq = new FileSeq(fseq, wk); wsingles.put(sfseq, wk); fstates.put(sfseq, fs[wk]); finfos.put(sfseq, infos[wk]); qstates.put(sfseq, qs[wk]); if (fs[wk] != FileState.CheckedIn) enabled.add(sfseq); } } } else { NodeDetailsLight details = pStatus.getLightDetails(); int wk; for (wk = 0; wk < fseq.numFrames(); wk++) { FileSeq sfseq = new FileSeq(fseq, wk); wsingles.put(sfseq, wk); if (details.getVersionState() == VersionState.CheckedIn) { fstates.put(sfseq, FileState.CheckedIn); qstates.put(sfseq, QueueState.Undefined); } else { enabled.add(sfseq); } } } } { vids.addAll(pNovelty.keySet()); Collections.reverse(vids); int idx = 0; for (VersionID vid : vids) { TreeMap<FileSeq, boolean[]> table = pNovelty.get(vid); for (FileSeq nfseq : table.keySet()) { if (fseq.similarTo(nfseq)) { boolean[] flags = table.get(nfseq); int wk; for (wk = 0; wk < flags.length; wk++) { FileSeq sfseq = new FileSeq(nfseq, wk); if (!wsingles.containsKey(sfseq)) wsingles.put(sfseq, null); Boolean[] rflags = novel.get(sfseq); if (rflags == null) { rflags = new Boolean[pNovelty.size()]; novel.put(sfseq, rflags); } rflags[idx] = new Boolean(flags[wk]); } break; } } idx++; } } } TreeMap<Integer, FileSeq> order = new TreeMap<Integer, FileSeq>(); for (FileSeq sfseq : wsingles.keySet()) { int frame = -1; if (sfseq.hasFrameNumbers()) frame = sfseq.getFrameRange().getStart(); order.put(frame, sfseq); } singles.addAll(order.values()); } /* add the panel */ { JFileSeqPanel panel = new JFileSeqPanel( this, pManagerPanel, pStatus, pPrivilegeDetails, fseq, vids, pOffline, singles, fstates, finfos, qstates, enabled, novel, pIsListLayout); if (pIsListLayout) pFileSeqsBox.add(panel); else pFileSeqsTab.addTab(fseq.getFilePattern().toString(), sTabIcon, panel); pFileSeqPanels.put(fseq, panel); } }