@NotNull private List<WorkingCopyFormat> getSupportedFormats() { List<WorkingCopyFormat> result = ContainerUtil.newArrayList(); ClientFactory factory = myVcs.getFactory(); ClientFactory otherFactory = myVcs.getOtherFactory(factory); try { result.addAll(factory.createUpgradeClient().getSupportedFormats()); result.addAll(SvnFormatWorker.getOtherFactoryFormats(otherFactory)); } catch (VcsException e) { LOG.info(e); } return result; }
@Override public void reportAppendableHistory( FilePath path, final VcsAppendableHistorySessionPartner partner) throws VcsException { // we need + 1 rows to be reported to further detect that number of rows exceeded the limit reportAppendableHistory( path, partner, null, null, VcsConfiguration.getInstance(myVcs.getProject()).MAXIMUM_HISTORY_ROWS + 1, null, false); }
public void reportAppendableHistory( FilePath path, final VcsAppendableHistorySessionPartner partner, @Nullable final SVNRevision from, @Nullable final SVNRevision to, final int limit, SVNRevision peg, final boolean forceBackwards) throws VcsException { FilePath committedPath = path; Change change = ChangeListManager.getInstance(myVcs.getProject()).getChange(path); if (change != null) { final ContentRevision beforeRevision = change.getBeforeRevision(); final ContentRevision afterRevision = change.getAfterRevision(); if (beforeRevision != null && afterRevision != null && !beforeRevision.getFile().equals(afterRevision.getFile()) && afterRevision.getFile().equals(path)) { committedPath = beforeRevision.getFile(); } // revision can be VcsRevisionNumber.NULL if (peg == null && change.getBeforeRevision() != null && change.getBeforeRevision().getRevisionNumber() instanceof SvnRevisionNumber) { peg = ((SvnRevisionNumber) change.getBeforeRevision().getRevisionNumber()).getRevision(); } } final boolean showMergeSources = SvnConfiguration.getInstance(myVcs.getProject()).isShowMergeSourcesInAnnotate(); final LogLoader logLoader; if (path.isNonLocal()) { logLoader = new RepositoryLoader( myVcs, committedPath, from, to, limit, peg, forceBackwards, showMergeSources); } else { logLoader = new LocalLoader(myVcs, committedPath, from, to, limit, peg, showMergeSources); } try { logLoader.preliminary(); } catch (SVNCancelException e) { throw new VcsException(e); } catch (SVNException e) { throw new VcsException(e); } logLoader.check(); if (showMergeSources) { logLoader.initSupports15(); } final SvnHistorySession historySession = new SvnHistorySession( myVcs, Collections.<VcsFileRevision>emptyList(), committedPath, showMergeSources && Boolean.TRUE.equals(logLoader.mySupport15), null, false, !path.isNonLocal()); final Ref<Boolean> sessionReported = new Ref<Boolean>(); final ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); if (indicator != null) { indicator.setText(SvnBundle.message("progress.text2.collecting.history", path.getName())); } final Consumer<VcsFileRevision> consumer = new Consumer<VcsFileRevision>() { @Override public void consume(VcsFileRevision vcsFileRevision) { if (!Boolean.TRUE.equals(sessionReported.get())) { partner.reportCreatedEmptySession(historySession); sessionReported.set(true); } partner.acceptRevision(vcsFileRevision); } }; logLoader.setConsumer(consumer); logLoader.load(); logLoader.check(); }
public CopiesPanel(final Project project) { myProject = project; myConnection = myProject.getMessageBus().connect(myProject); myVcs = SvnVcs.getInstance(myProject); myCurrentInfoList = null; final Runnable focus = new Runnable() { @Override public void run() { IdeFocusManager.getInstance(myProject).requestFocus(myRefreshLabel, true); } }; final Runnable refreshView = new Runnable() { @Override public void run() { final List<WCInfo> infoList = myVcs.getWcInfosWithErrors(); final boolean hasErrors = !myVcs.getSvnFileUrlMapping().getErrorRoots().isEmpty(); final List<WorkingCopyFormat> supportedFormats = getSupportedFormats(); Runnable runnable = new Runnable() { @Override public void run() { if (myCurrentInfoList != null) { final List<OverrideEqualsWrapper<WCInfo>> newList = ObjectsConvertor.convert( infoList, new Convertor<WCInfo, OverrideEqualsWrapper<WCInfo>>() { @Override public OverrideEqualsWrapper<WCInfo> convert(WCInfo o) { return new OverrideEqualsWrapper<WCInfo>( InfoEqualityPolicy.getInstance(), o); } }, ObjectsConvertor.NOT_NULL); if (Comparing.haveEqualElements(newList, myCurrentInfoList)) { myRefreshLabel.setEnabled(true); return; } myCurrentInfoList = newList; } Collections.sort(infoList, WCComparator.getInstance()); updateList(infoList, supportedFormats); myRefreshLabel.setEnabled(true); showErrorNotification(hasErrors); SwingUtilities.invokeLater(focus); } }; ApplicationManager.getApplication().invokeLater(runnable, ModalityState.NON_MODAL); } }; final Consumer<Boolean> refreshOnPooled = new Consumer<Boolean>() { @Override public void consume(Boolean somethingNew) { if (Boolean.TRUE.equals(somethingNew)) { if (ApplicationManager.getApplication().isUnitTestMode()) { refreshView.run(); } else { ApplicationManager.getApplication().executeOnPooledThread(refreshView); } } else { ApplicationManager.getApplication() .invokeLater( new Runnable() { @Override public void run() { myRefreshLabel.setEnabled(true); } }, ModalityState.NON_MODAL); } } }; myConnection.subscribe(SvnVcs.ROOTS_RELOADED, refreshOnPooled); final JPanel holderPanel = new JPanel(new BorderLayout()); FontMetrics fm = holderPanel.getFontMetrics(holderPanel.getFont()); myTextHeight = (int) (fm.getHeight() * 1.3); myPanel = new JPanel(new GridBagLayout()); final JPanel panel = new JPanel(new BorderLayout()); panel.add(myPanel, BorderLayout.NORTH); holderPanel.add(panel, BorderLayout.WEST); myRefreshLabel = new MyLinkLabel( myTextHeight, "Refresh", new LinkListener() { @Override public void linkSelected(LinkLabel aSource, Object aLinkData) { if (myRefreshLabel.isEnabled()) { myVcs.invokeRefreshSvnRoots(); myRefreshLabel.setEnabled(false); } } }); final JScrollPane pane = ScrollPaneFactory.createScrollPane(holderPanel); myHolder = pane; final JScrollBar vBar = pane.getVerticalScrollBar(); vBar.setBlockIncrement(vBar.getBlockIncrement() * 5); vBar.setUnitIncrement(vBar.getUnitIncrement() * 5); myHolder.setBorder(null); setFocusableForLinks(myRefreshLabel); refreshOnPooled.consume(true); initView(); }