See: Description
Package | Description |
---|---|
org.netbeans.api.diff | |
org.netbeans.spi.diff |
Support to everything related to creation and visualization of diffs. This library allows registrations of various diff providers and visualizers and provides programatic access to their functionality.
Added the system property netbeans.diff.default.compact which instructs the default DiffControllerProvider to show only the graphical diff (instead of the tabbed pane with the graphical and textual diffs).
Adding new methods to the API/SPI which create a Diff Controller capable of providing a diff view with enhanced UI.
Adding PatchUtils.java to the API. Contains two new methods - isPatch(patchFile) and applyPatch(patchFile, contextFile)
DiffController class is a successor to DiffView interface that provides more features.
StreamSource provides more ways of defining the source (a FileObject) and can declare its editability.
From an action or wherever you like you can call this:
public void diff(final StreamSource local, final StreamSource remote){ SwingUtilities.invokeLater(new Runnable() { public void run() { try { DiffView view = Diff.getDefault().createDiff(local, remote); showDiff(view); } catch (IOException ex) { Logger.getLogger(ThisClass.class.getName()).throwing(ex); } } }); } public void showDiff(final DiffView view){ SwingUtilities.invokeLater(new Runnable() { public void run() { //create our panel with our view //right now I am just going to use the diff component // instead of a panel //create a topcomponent with our panel DiffTopComponent tc = new DiffTopComponent(view); tc.setName("MY_DIFF"); tc.setDisplayName("Some display name"); tc.open(); tc.requestActive(); } }); }
Here is a top component to display it:
public class DiffTopComponent extends TopComponent { /** Creates a new instance of DiffTopComponent */ public DiffTopComponent(Component diffPanel) { setLayout(new BorderLayout()); add(diffPanel, BorderLayout.CENTER); getAccessibleContext().setAccessibleName( NbBundle.getMessage(DiffTopComponent.class, "ACSN_Diff_Top_Component")); // NOI18N getAccessibleContext().setAccessibleDescription( NbBundle.getMessage(DiffTopComponent.class, "ACSD_Diff_Top_Component")); // NOI18N } public DiffTopComponent(DiffView view) { this(view.getComponent()); } public int getPersistenceType(){ return TopComponent.PERSISTENCE_NEVER; } protected String preferredID(){ return "DiffTopComponent"; //NOI18N } public HelpCtx getHelpCtx() { return new HelpCtx(getClass()); } }
|
|
The sources for the module are in the NetBeans Mercurial repositories.
Read more about the implementation in the answers to architecture questions.