Added proper undo/redo support in the shader editor
This commit is contained in:
parent
7c88da9d5c
commit
c310b933c9
@ -37,7 +37,6 @@ import java.awt.event.KeyEvent;
|
|||||||
import java.awt.event.KeyListener;
|
import java.awt.event.KeyListener;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import javax.swing.JEditorPane;
|
import javax.swing.JEditorPane;
|
||||||
import javax.swing.text.EditorKit;
|
|
||||||
import org.netbeans.api.project.Project;
|
import org.netbeans.api.project.Project;
|
||||||
import org.netbeans.api.project.ProjectManager;
|
import org.netbeans.api.project.ProjectManager;
|
||||||
import org.netbeans.core.spi.multiview.MultiViewElement;
|
import org.netbeans.core.spi.multiview.MultiViewElement;
|
||||||
@ -54,7 +53,6 @@ import org.openide.loaders.DataObject;
|
|||||||
import org.openide.loaders.DataObjectExistsException;
|
import org.openide.loaders.DataObjectExistsException;
|
||||||
import org.openide.loaders.MultiDataObject;
|
import org.openide.loaders.MultiDataObject;
|
||||||
import org.openide.loaders.MultiFileLoader;
|
import org.openide.loaders.MultiFileLoader;
|
||||||
import org.openide.text.CloneableEditorSupport;
|
|
||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
import org.openide.util.NbBundle.Messages;
|
import org.openide.util.NbBundle.Messages;
|
||||||
import org.openide.util.lookup.AbstractLookup;
|
import org.openide.util.lookup.AbstractLookup;
|
||||||
@ -243,8 +241,7 @@ public class MatDefDataObject extends MultiDataObject {
|
|||||||
obj.unload();
|
obj.unload();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
obj.getLookupContents().add(ed);
|
||||||
|
|
||||||
return ed;
|
return ed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ import javax.swing.JToolBar;
|
|||||||
import org.netbeans.core.spi.multiview.CloseOperationState;
|
import org.netbeans.core.spi.multiview.CloseOperationState;
|
||||||
import org.netbeans.core.spi.multiview.MultiViewElement;
|
import org.netbeans.core.spi.multiview.MultiViewElement;
|
||||||
import org.netbeans.core.spi.multiview.MultiViewElementCallback;
|
import org.netbeans.core.spi.multiview.MultiViewElementCallback;
|
||||||
|
import org.netbeans.core.spi.multiview.text.MultiViewEditorElement;
|
||||||
import org.openide.awt.UndoRedo;
|
import org.openide.awt.UndoRedo;
|
||||||
import org.openide.filesystems.FileObject;
|
import org.openide.filesystems.FileObject;
|
||||||
import org.openide.filesystems.FileUtil;
|
import org.openide.filesystems.FileUtil;
|
||||||
@ -433,7 +434,7 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UndoRedo getUndoRedo() {
|
public UndoRedo getUndoRedo() {
|
||||||
return UndoRedo.NONE;
|
return obj.getLookup().lookup(MultiViewEditorElement.class).getUndoRedo();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -16,6 +16,7 @@ import java.util.List;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JToggleButton;
|
import javax.swing.JToggleButton;
|
||||||
import javax.swing.text.EditorKit;
|
import javax.swing.text.EditorKit;
|
||||||
|
import org.openide.awt.UndoRedo;
|
||||||
import org.openide.cookies.EditorCookie;
|
import org.openide.cookies.EditorCookie;
|
||||||
import org.openide.filesystems.FileLock;
|
import org.openide.filesystems.FileLock;
|
||||||
import org.openide.filesystems.FileObject;
|
import org.openide.filesystems.FileObject;
|
||||||
@ -32,6 +33,7 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
|
|
||||||
private DataObject currentDataObject = null;
|
private DataObject currentDataObject = null;
|
||||||
private MatDefEditorlElement parent = null;
|
private MatDefEditorlElement parent = null;
|
||||||
|
private UndoRedo.Manager undoRedoManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new form ShaderEditPanel
|
* Creates new form ShaderEditPanel
|
||||||
@ -61,6 +63,7 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
|
|
||||||
public void setParent(MatDefEditorlElement parent) {
|
public void setParent(MatDefEditorlElement parent) {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
undoRedoManager = (UndoRedo.Manager)parent.getUndoRedo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFiles(String title, NodePanel.NodeType type, List<FileObject> fos) {
|
public void setFiles(String title, NodePanel.NodeType type, List<FileObject> fos) {
|
||||||
@ -85,6 +88,8 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
saveCurrent();
|
saveCurrent();
|
||||||
try {
|
try {
|
||||||
shaderEditorPane.setDocument(b.dataObject.getLookup().lookup(EditorCookie.class).openDocument());
|
shaderEditorPane.setDocument(b.dataObject.getLookup().lookup(EditorCookie.class).openDocument());
|
||||||
|
undoRedoManager.discardAllEdits();
|
||||||
|
shaderEditorPane.getDocument().addUndoableEditListener(undoRedoManager);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
}
|
}
|
||||||
@ -94,6 +99,8 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
});
|
});
|
||||||
if (firstItem) {
|
if (firstItem) {
|
||||||
shaderEditorPane.setDocument(b.dataObject.getLookup().lookup(EditorCookie.class).openDocument());
|
shaderEditorPane.setDocument(b.dataObject.getLookup().lookup(EditorCookie.class).openDocument());
|
||||||
|
undoRedoManager.discardAllEdits();
|
||||||
|
shaderEditorPane.getDocument().addUndoableEditListener(undoRedoManager);
|
||||||
currentDataObject = b.dataObject;
|
currentDataObject = b.dataObject;
|
||||||
b.setSelected(true);
|
b.setSelected(true);
|
||||||
firstItem = false;
|
firstItem = false;
|
||||||
@ -224,7 +231,7 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
|
|
||||||
private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed
|
private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed
|
||||||
setVisible(false);
|
setVisible(false);
|
||||||
|
shaderEditorPane.getDocument().removeUndoableEditListener(undoRedoManager);
|
||||||
saveCurrent();
|
saveCurrent();
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user