Skip to main content

Link Two codes - text editor

Please note these java.net forums are being decommissioned and use the new and improved forums at https://community.oracle.com/community/java.
No replies
ellosma
Offline
Joined: 2013-03-19

I want to do a complete text editor so, seeing mandy tutorial i wrote 2
Code. The first is about Saving with name, exit,create new file, open
Docx file, CUT , select all, delete, paste a text . The second is a
Jtextpane editor for changing font and color in a text. Now i'd like to
Have a one complete text editor with both the codes. I'd like to link
The first code ( about docx DOcuments )with the second ( about the font)
Could someone help me ? I have no idea how to to it, and also if it's
Possibile !!

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package GUI;

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
*
* @author Elena
*/
public class Form extends javax.swing.JFrame {
String ClipboardData = "";
private Object CurrentFileDirectory;
/**
* Creates new form Form
*/
public Form() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {

jScrollPane2 = new javax.swing.JScrollPane();
editorpane = new javax.swing.JEditorPane();
jMenuBar1 = new javax.swing.JMenuBar();
Open = new javax.swing.JMenu();
New = new javax.swing.JMenuItem();
Openfile = new javax.swing.JMenuItem();
Save = new javax.swing.JMenuItem();
SaveAs = new javax.swing.JMenuItem();
Exit = new javax.swing.JMenuItem();
Cut = new javax.swing.JMenu();
jMenuItem6 = new javax.swing.JMenuItem();
Copy = new javax.swing.JMenuItem();
Paste = new javax.swing.JMenuItem();
Delete = new javax.swing.JMenuItem();
SelectAll = new javax.swing.JMenuItem();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Java Text Editor");

jScrollPane2.setViewportView(editorpane);

Open.setText("File");

New.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
New.setText("New");
New.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
NewActionPerformed(evt);
}
});
Open.add(New);

Openfile.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
Openfile.setText("Open...");
Openfile.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
OpenfileActionPerformed(evt);
}
});
Open.add(Openfile);

Save.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
Save.setText("Save");
Save.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SaveActionPerformed(evt);
}
});
Open.add(Save);

SaveAs.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
SaveAs.setText("Save As...");
SaveAs.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SaveAsActionPerformed(evt);
}
});
Open.add(SaveAs);

Exit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_0, java.awt.event.InputEvent.CTRL_MASK));
Exit.setText("Exit");
Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitActionPerformed(evt);
}
});
Open.add(Exit);

jMenuBar1.add(Open);

Cut.setText("Edit");

jMenuItem6.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
jMenuItem6.setText("Cut");
jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem6ActionPerformed(evt);
}
});
Cut.add(jMenuItem6);

Copy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
Copy.setText("Copy");
Copy.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
CopyActionPerformed(evt);
}
});
Cut.add(Copy);

Paste.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
Paste.setText("Paste");
Paste.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
PasteActionPerformed(evt);
}
});
Cut.add(Paste);

Delete.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_DELETE, 0));
Delete.setText("Delete");
Delete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
DeleteActionPerformed(evt);
}
});
Cut.add(Delete);

SelectAll.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
SelectAll.setText("Select All");
SelectAll.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SelectAllActionPerformed(evt);
}
});
Cut.add(SelectAll);

jMenuBar1.add(Cut);

setJMenuBar(jMenuBar1);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 600, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 479, Short.MAX_VALUE)
);

pack();
}//

private void NewActionPerformed(java.awt.event.ActionEvent evt) {
editorpane.setText("");
}

private void ExitActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}

private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
editorpane.replaceSelection("");
}

private void SaveAsActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser sdChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("DOCX File", "txt");
sdChooser.setFileFilter(filter);
int returnVal = sdChooser.showSaveDialog(null);
try{
if(returnVal == JFileChooser.APPROVE_OPTION){
File directory = sdChooser.getCurrentDirectory();
String path = directory.getAbsolutePath();
String fileName = sdChooser.getSelectedFile().getName();
if(fileName.contains(".docx")){
}else{
fileName = fileName + ".docx";
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path + "
" + fileName)));
bw.write(editorpane.getText());
bw.close();
}
} catch(IOException e){
JOptionPane.showMessageDialog(null, "ERROR!");
}
}

private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {
ClipboardData = editorpane.getSelectedText();
StringSelection stringSelection = new StringSelection(ClipboardData);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
editorpane.replaceSelection("");
}

private void CopyActionPerformed(java.awt.event.ActionEvent evt) {
ClipboardData = editorpane.getSelectedText();
StringSelection stringSelection = new StringSelection(ClipboardData);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
}

private void PasteActionPerformed(java.awt.event.ActionEvent evt) {
editorpane.append(ClipboardData);
}

private void SelectAllActionPerformed(java.awt.event.ActionEvent evt) {
editorpane.selectAll();
}

private void OpenfileActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser opChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("DOCX file", "docx");
opChooser.setFileFilter(filter);
int returnval = opChooser.showOpenDialog(null);
File chosenFile = opChooser.getSelectedFile();
try {
if(returnval == JFileChooser.APPROVE_OPTION){
BufferedReader br = new BufferedReader(new FileReader(chosenFile));
editorpane.setText("");
String data;
while((data = br.readLine()) != null) {
editorpane.append(data + "\n");}
br.close();
}
}catch(IOException e){
JOptionPane.showMessageDialog(null, "ERROR!" );
}
}

private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
if("".equals(CurrentFileDirectory)){

JFileChooser sdChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("DOCX file", "docx");
sdChooser.setFileFilter(filter);
int returnval = sdChooser.showOpenDialog(null);
try{
if(returnval == JFileChooser.APPROVE_OPTION){
File directory = sdChooser.getCurrentDirectory();
String path = directory.getAbsolutePath();
String fileName = sdChooser.getSelectedFile().getName();
if(fileName.contains(".docx")){
}else{
fileName = fileName + ".docx";
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path + "
" + fileName)));
bw.write(editorpane.getText());
bw.close();}
}catch(IOException e){
JOptionPane.showMessageDialog(null, "ERROR!");
}
}
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Form().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenuItem Copy;
private javax.swing.JMenu Cut;
private javax.swing.JMenuItem Delete;
private javax.swing.JMenuItem Exit;
private javax.swing.JMenuItem New;
private javax.swing.JMenu Open;
private javax.swing.JMenuItem Openfile;
private javax.swing.JMenuItem Paste;
private javax.swing.JMenuItem Save;
private javax.swing.JMenuItem SaveAs;
private javax.swing.JMenuItem SelectAll;
private javax.swing.JEditorPane editorpane;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem6;
private javax.swing.JScrollPane jScrollPane2;
// End of variables declaration
}

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.Element;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.text.StyledEditorKit;

public class Colore {
public Colore() {
JFrame frame = new JFrame();
JTextPane textPane = new JTextPane();
JScrollPane scrollPane = new JScrollPane(textPane);

JPanel north = new JPanel();

JMenuBar menu = new JMenuBar();
JMenu styleMenu = new JMenu();
styleMenu.setText("Style");

Action boldAction = new BoldAction();
boldAction.putValue(Action.NAME, "Bold");
styleMenu.add(boldAction);

Action italicAction = new ItalicAction();
italicAction.putValue(Action.NAME, "Italic");
styleMenu.add(italicAction);

Action foregroundAction = new ForegroundAction();
foregroundAction.putValue(Action.NAME, "Color");
styleMenu.add(foregroundAction);

Action formatTextAction = new FontAndSizeAction();
formatTextAction.putValue(Action.NAME, "Font and Size");
styleMenu.add(formatTextAction);
menu.add(styleMenu);

north.add(menu);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(north, BorderLayout.NORTH);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(800, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

public static void main(String[] args) {
new Culo();
}
}
class BoldAction extends StyledEditorKit.StyledTextAction {
private static final long serialVersionUID = 9174670038684056758L;

public BoldAction() {
super("font-bold");
}

public String toString() {
return "Bold";
}

public void actionPerformed(ActionEvent e) {
JEditorPane editor = getEditor(e);
if (editor != null) {
StyledEditorKit kit = getStyledEditorKit(editor);
MutableAttributeSet attr = kit.getInputAttributes();
boolean bold = (StyleConstants.isBold(attr)) ? false : true;
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setBold(sas, bold);
setCharacterAttributes(editor, sas, false);

}
}
}

class ItalicAction extends StyledEditorKit.StyledTextAction {

private static final long serialVersionUID = -1428340091100055456L;

public ItalicAction() {
super("font-italic");
}

public String toString() {
return "Italic";
}

public void actionPerformed(ActionEvent e) {
JEditorPane editor = getEditor(e);
if (editor != null) {
StyledEditorKit kit = getStyledEditorKit(editor);
MutableAttributeSet attr = kit.getInputAttributes();
boolean italic = (StyleConstants.isItalic(attr)) ? false : true;
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setItalic(sas, italic);
setCharacterAttributes(editor, sas, false);
}
}
}
class ForegroundAction extends StyledEditorKit.StyledTextAction {

private static final long serialVersionUID = 6384632651737400352L;

JColorChooser colorChooser = new JColorChooser();

JDialog dialog = new JDialog();

boolean noChange = false;

boolean cancelled = false;

public ForegroundAction() {
super("foreground");

}

public void actionPerformed(ActionEvent e) {
JTextPane editor = (JTextPane) getEditor(e);

if (editor == null) {
JOptionPane.showMessageDialog(null,
"You need to select the editor pane before you can change the color.", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
int p0 = editor.getSelectionStart();
StyledDocument doc = getStyledDocument(editor);
Element paragraph = doc.getCharacterElement(p0);
AttributeSet as = paragraph.getAttributes();
fg = StyleConstants.getForeground(as);
if (fg == null) {
fg = Color.BLACK;
}
colorChooser.setColor(fg);

JButton accept = new JButton("OK");
accept.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
fg = colorChooser.getColor();
dialog.dispose();
}
});

JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
cancelled = true;
dialog.dispose();
}
});

JButton none = new JButton("None");
none.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
noChange = true;
dialog.dispose();
}
});

JPanel buttons = new JPanel();
buttons.add(accept);
buttons.add(none);
buttons.add(cancel);

dialog.getContentPane().setLayout(new BorderLayout());
dialog.getContentPane().add(colorChooser, BorderLayout.CENTER);
dialog.getContentPane().add(buttons, BorderLayout.SOUTH);
dialog.setModal(true);
dialog.pack();
dialog.setVisible(true);

if (!cancelled) {

MutableAttributeSet attr = null;
if (editor != null) {
if (fg != null && !noChange) {
attr = new SimpleAttributeSet();
StyleConstants.setForeground(attr, fg);
setCharacterAttributes(editor, attr, false);
}
}
}// end if color != null
noChange = false;
cancelled = false;
}

private Color fg;
}

class FontAndSizeAction extends StyledEditorKit.StyledTextAction {

private static final long serialVersionUID = 584531387732416339L;

private String family;

private float fontSize;

JDialog formatText;

private boolean accept = false;

JComboBox fontFamilyChooser;

JComboBox fontSizeChooser;

public FontAndSizeAction() {
super("Font and Size");
}

public String toString() {
return "Font and Size";
}

public void actionPerformed(ActionEvent e) {
JTextPane editor = (JTextPane) getEditor(e);
int p0 = editor.getSelectionStart();
StyledDocument doc = getStyledDocument(editor);
Element paragraph = doc.getCharacterElement(p0);
AttributeSet as = paragraph.getAttributes();

family = StyleConstants.getFontFamily(as);
fontSize = StyleConstants.getFontSize(as);

formatText = new JDialog(new JFrame(), "Font and Size", true);
formatText.getContentPane().setLayout(new BorderLayout());

JPanel choosers = new JPanel();
choosers.setLayout(new GridLayout(2, 1));

JPanel fontFamilyPanel = new JPanel();
fontFamilyPanel.add(new JLabel("Font"));

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontNames = ge.getAvailableFontFamilyNames();

fontFamilyChooser = new JComboBox();
for (int i = 0; i < fontNames.length; i++) {
fontFamilyChooser.addItem(fontNames);
}
fontFamilyChooser.setSelectedItem(family);
fontFamilyPanel.add(fontFamilyChooser);
choosers.add(fontFamilyPanel);

JPanel fontSizePanel = new JPanel();
fontSizePanel.add(new JLabel("Size"));
fontSizeChooser = new JComboBox();
fontSizeChooser.setEditable(true);
fontSizeChooser.addItem(new Float(4));
fontSizeChooser.addItem(new Float(8));
fontSizeChooser.addItem(new Float(12));
fontSizeChooser.addItem(new Float(16));
fontSizeChooser.addItem(new Float(20));
fontSizeChooser.addItem(new Float(24));
fontSizeChooser.setSelectedItem(new Float(fontSize));
fontSizePanel.add(fontSizeChooser);
choosers.add(fontSizePanel);

JButton ok = new JButton("OK");
ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
accept = true;
formatText.dispose();
family = (String) fontFamilyChooser.getSelectedItem();
fontSize = Float.parseFloat(fontSizeChooser.getSelectedItem().toString());
}
});

JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
formatText.dispose();
}
});

JPanel buttons = new JPanel();
buttons.add(ok);
buttons.add(cancel);
formatText.getContentPane().add(choosers, BorderLayout.CENTER);
formatText.getContentPane().add(buttons, BorderLayout.SOUTH);
formatText.pack();
formatText.setVisible(true);

MutableAttributeSet attr = null;
if (editor != null && accept) {
attr = new SimpleAttributeSet();
StyleConstants.setFontFamily(attr, family);
StyleConstants.setFontSize(attr, (int) fontSize);
setCharacterAttributes(editor, attr, false);
}

}
}