Diff
Official
Overview of Diff module
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.
What is New (see all changes)?
- May 2 '18 Show compact diff with netbeans.diff.default.compact system property 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).
- Mar 4 '10 Enhanced UI in diff views Adding new methods to the API/SPI which create a Diff Controller capable of providing a diff view with enhanced UI.
- Jul 7 '09 New DiffController API Adding PatchUtils.java to the API. Contains two new methods - isPatch(patchFile) and applyPatch(patchFile, contextFile)
- Apr 17 '07 New DiffController API DiffController class is a successor to DiffView interface that provides more features.
- Feb 21 '07 StreamSource extended StreamSource provides more ways of defining the source (a FileObject) and can declare its editability.
Use Cases
Show a diff from action
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(); } }); }
Embeded into TopComponent
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()); } }
Exported Interfaces
This table lists all of the module exported APIs with defined stability classifications. It is generated based on answers to questions about the architecture of the module. Read them all...Group of java interfaces
Interface Name | In/Out | Stability | Specified in What Document? |
---|---|---|---|
DiffAPI | Exported | Official | |
DiffImplementationAPI | Exported | Friend |
Group of systemproperty interfaces
Interface Name | In/Out | Stability | Specified in What Document? |
---|
Implementation Details
Where are the sources for the module?
The sources for the module are in the Apache Git repositories or in the GitHub repositories
What do other modules need to do to declare a dependency on this one, in addition to or instead of a plain module dependency?
Nothing.Read more about the implementation in the answers to architecture questions.
Diff