Proper save handling for the shader editor.
This commit is contained in:
parent
3a61032575
commit
06e9618a4b
@ -67,9 +67,6 @@
|
|||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JPanel" name="header">
|
<Container class="javax.swing.JPanel" name="header">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
|
||||||
<Color blue="66" green="66" id="TabbedPane.focus" palette="3" red="66" type="palette"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
||||||
<EtchetBorder/>
|
<EtchetBorder/>
|
||||||
@ -99,9 +96,6 @@
|
|||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Component class="javax.swing.JLabel" name="headerText">
|
<Component class="javax.swing.JLabel" name="headerText">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
|
||||||
<Color blue="66" green="66" id="TabbedPane.focus" palette="3" red="66" type="palette"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
<Font name="Tahoma" size="11" style="1"/>
|
<Font name="Tahoma" size="11" style="1"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
@ -12,11 +12,12 @@ import java.awt.event.ActionListener;
|
|||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.KeyListener;
|
import java.awt.event.KeyListener;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStreamWriter;
|
|
||||||
import java.util.List;
|
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.cookies.EditorCookie;
|
||||||
|
import org.openide.filesystems.FileLock;
|
||||||
import org.openide.filesystems.FileObject;
|
import org.openide.filesystems.FileObject;
|
||||||
import org.openide.loaders.DataObject;
|
import org.openide.loaders.DataObject;
|
||||||
import org.openide.loaders.DataObjectNotFoundException;
|
import org.openide.loaders.DataObjectNotFoundException;
|
||||||
@ -41,21 +42,20 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
EditorKit ek = CloneableEditorSupport.getEditorKit(mime);
|
EditorKit ek = CloneableEditorSupport.getEditorKit(mime);
|
||||||
shaderEditorPane.setEditorKit(ek);
|
shaderEditorPane.setEditorKit(ek);
|
||||||
shaderEditorPane.setContentType(mime);
|
shaderEditorPane.setContentType(mime);
|
||||||
|
|
||||||
shaderEditorPane.addKeyListener(new KeyListener() {
|
shaderEditorPane.addKeyListener(new KeyListener() {
|
||||||
|
|
||||||
public void keyTyped(KeyEvent e) {
|
public void keyTyped(KeyEvent e) {
|
||||||
currentDataObject.setModified(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void keyPressed(KeyEvent e) {
|
public void keyPressed(KeyEvent e) {
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void keyReleased(KeyEvent e) {
|
|
||||||
if ((e.getKeyCode() == KeyEvent.VK_S) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
|
if ((e.getKeyCode() == KeyEvent.VK_S) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
|
||||||
saveCurrent();
|
saveCurrent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void keyReleased(KeyEvent e) {
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
saveCurrent();
|
saveCurrent();
|
||||||
try {
|
try {
|
||||||
shaderEditorPane.setText(b.dataObject.getPrimaryFile().asText());
|
shaderEditorPane.setDocument(b.dataObject.getLookup().lookup(EditorCookie.class).openDocument());
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
}
|
}
|
||||||
@ -93,7 +93,7 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
|
|
||||||
});
|
});
|
||||||
if (firstItem) {
|
if (firstItem) {
|
||||||
shaderEditorPane.setText(fo.asText());
|
shaderEditorPane.setDocument(b.dataObject.getLookup().lookup(EditorCookie.class).openDocument());
|
||||||
currentDataObject = b.dataObject;
|
currentDataObject = b.dataObject;
|
||||||
b.setSelected(true);
|
b.setSelected(true);
|
||||||
firstItem = false;
|
firstItem = false;
|
||||||
@ -109,10 +109,10 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
|
|
||||||
public void saveCurrent() {
|
public void saveCurrent() {
|
||||||
if (currentDataObject != null && currentDataObject.isModified()) {
|
if (currentDataObject != null && currentDataObject.isModified()) {
|
||||||
|
FileLock lock = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
OutputStreamWriter out = new OutputStreamWriter(currentDataObject.getPrimaryFile().getOutputStream());
|
currentDataObject.getLookup().lookup(EditorCookie.class).saveDocument();
|
||||||
out.write(shaderEditorPane.getText(), 0, shaderEditorPane.getText().length());
|
|
||||||
out.close();
|
|
||||||
currentDataObject.setModified(false);
|
currentDataObject.setModified(false);
|
||||||
if(currentDataObject.getPrimaryFile().getExt().equalsIgnoreCase("j3sn")){
|
if(currentDataObject.getPrimaryFile().getExt().equalsIgnoreCase("j3sn")){
|
||||||
parent.reload();
|
parent.reload();
|
||||||
@ -122,6 +122,10 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
|
}finally{
|
||||||
|
if (lock!=null){
|
||||||
|
lock.releaseLock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -155,10 +159,8 @@ public class ShaderEditPanel extends JPanel {
|
|||||||
shaderEditorPane.setText(org.openide.util.NbBundle.getMessage(ShaderEditPanel.class, "ShaderEditPanel.shaderEditorPane.text")); // NOI18N
|
shaderEditorPane.setText(org.openide.util.NbBundle.getMessage(ShaderEditPanel.class, "ShaderEditPanel.shaderEditorPane.text")); // NOI18N
|
||||||
jScrollPane1.setViewportView(shaderEditorPane);
|
jScrollPane1.setViewportView(shaderEditorPane);
|
||||||
|
|
||||||
header.setBackground(javax.swing.UIManager.getDefaults().getColor("TabbedPane.focus"));
|
|
||||||
header.setBorder(javax.swing.BorderFactory.createEtchedBorder());
|
header.setBorder(javax.swing.BorderFactory.createEtchedBorder());
|
||||||
|
|
||||||
headerText.setBackground(javax.swing.UIManager.getDefaults().getColor("TabbedPane.focus"));
|
|
||||||
headerText.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
|
headerText.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
|
||||||
headerText.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
headerText.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
headerText.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/fragment.png"))); // NOI18N
|
headerText.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/fragment.png"))); // NOI18N
|
||||||
|
Loading…
x
Reference in New Issue
Block a user