package pruebas;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import compilador.archivo.Historial;
import compilador.definiciones.KeyBoard;
import compilador.editor.gui.ToolPanel;
import file_filters.TextFilter;
public class ReadingFile extends JFrame implements ActionListener, KeyListener{
/**
* Date is Serial
*/
private static final long serialVersionUID = 20090921;
private JTextArea Hoja;
private JPanel p1;
private ToolPanel pH;
private JPanel pI;
private JLabel LStatus;
private JLabel PathArchivo;
private JLabel InfoCursor;
private JScrollPane scrollText;
private String NombreArchivo="";
//private String PathArchivo="";
private int col=0;
private int lin=0;
private int MaxLin=0;
private TitledBorder BordeHoja;
private Border ColorBorde;
private Historial RecentlyFiles;
private File[] RecentlyPaths;
public ReadingFile(String title){
super(title);
RecentlyFiles = new Historial();
RecentlyPaths = RecentlyFiles.getRecently();
p1 = new JPanel();
//pH = new ToolPanel(this);
pI = new JPanel();
Hoja = new JTextArea();
InfoCursor = new JLabel("");
PathArchivo = new JLabel("");
LStatus = new JLabel("");
pI.setLayout(new GridLayout(2,2));
pI.add(LStatus);
pI.add(InfoCursor);
pI.add(PathArchivo);
scrollText = new JScrollPane(Hoja);
scrollText.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollText.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollText.setPreferredSize(new Dimension(50, 50));
ColorBorde = BorderFactory.createLineBorder(Color.black);
BordeHoja = BorderFactory.createTitledBorder(ColorBorde, "-");
BordeHoja.setTitleJustification(TitledBorder.CENTER);
Hoja.setBorder(BordeHoja);
p1.setLayout(new GridLayout(1,1));
p1.add(scrollText);
this.setLayout(new BorderLayout());
this.add(pH, BorderLayout.NORTH);
this.add(p1,BorderLayout.CENTER);
this.add(pI,BorderLayout.SOUTH);
Hoja.setBackground(Color.gray);
Hoja.setEditable(false);
SelecArchivoT.addChoosableFileFilter(new TextFilter());
SelecArchivoT.setAcceptAllFileFilterUsed(false);
KeyListener enter = null;
KeyEvent e;
Hoja.addKeyListener(this);
}
private static final String OPEN_ICON = "/Resources/gui/ico/open.png";
private JMenuBar BarraMenu;
private JMenu mArchivo;
private JMenuItem smNuevo;
private JMenuItem smAbrir;
private JMenu smAbrirR;
private JMenuItem smRecientes;
private JMenuItem smCerrar;
private JMenuItem menuItem;// item de menu
private JMenuItem menuItemCp;
private JMenuItem menuItemUp;
private JCheckBoxMenuItem menuItemM;
private JCheckBoxMenuItem menuItemS;
private int TotalR=0;
/**
* Barra de menu para la ventana
* @return BarraMenu , es la barra de menu
*/
public JMenuBar createMenuBar() {
BarraMenu = new JMenuBar();
mArchivo = new JMenu("Archivo");
mArchivo.setMnemonic(KeyEvent.VK_A);// mnemonic
BarraMenu.add(mArchivo);// pone el menu en la barra de menu
smNuevo = new JMenuItem("Nuevo");
//smNuevo.setMnemonic(KeyEvent.VK_N);
smNuevo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
ActionEvent.CTRL_MASK));
smNuevo.setActionCommand("ctrl+n");
smNuevo.setToolTipText("Nuevo Texto" );
mArchivo.add(smNuevo);
mArchivo.addSeparator();
smNuevo.setEnabled(false);
smAbrir = new JMenuItem("Abrir",new ImageIcon(getClass().getResource(OPEN_ICON)));
//smAbrir.setMnemonic(KeyEvent.VK_O);
smAbrir.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
ActionEvent.CTRL_MASK));
smAbrir.setToolTipText("Abre un Archivo *.txt");
mArchivo.add(smAbrir);
smAbrir.addActionListener(this);
smAbrirR = new JMenu ("Abrir recientes");
smAbrirR.setMnemonic(KeyEvent.VK_P);
smAbrirR.setToolTipText("Abre archivos recientes");
for(int ix=0;ix<RecentlyPaths.length;ix++){
if(RecentlyPaths[ix]!=null){
smRecientes = new JMenuItem(RecentlyPaths[ix].getName());
smRecientes.setToolTipText( RecentlyPaths[ix].getPath());
smRecientes.addActionListener(this);
smAbrirR.add(smRecientes);
TotalR++;
}
}
//Historial();
mArchivo.add(smAbrirR);
//smAbrirR.setEnabled(false);
mArchivo.addSeparator();
smCerrar = new JMenuItem ("Salir");
smCerrar.setToolTipText("Termina Aplicación");
mArchivo.add(smCerrar);
smCerrar.addActionListener(this);
return BarraMenu;
}
public void Historial(){
}
private JFileChooser SelecArchivoT = new JFileChooser();
private File ArchivoTexto;
/**
* Abre archivo desde la interfaz
*/
public boolean openFile(){
//intervalo = SeleccionArchivo.showOpenDialog(this);
//if(intervalo == JFileChooser.APPROVE_OPTION){
if(SelecArchivoT.showOpenDialog(this) == JFileChooser.APPROVE_OPTION){
ArchivoTexto = SelecArchivoT.getSelectedFile();
return true;
}
else{
BordeHoja = BorderFactory.createTitledBorder(ColorBorde, "-");
return false;
}
}
private BufferedReader bufferL;
private String LineaT="";
private String Status="";
private Vector <String> VTexto;
/**
* Muestra el Texto del archivo
*/
public boolean ShowFile(){
ArchivoNuevo=false;
VTexto = new Vector();
Hoja.setText("");
BordeHoja = BorderFactory.createTitledBorder(ColorBorde, ""+ArchivoTexto.getName());
PathArchivo.setText("Ubicación: "+ArchivoTexto.getPath());
PathArchivo.setToolTipText(ArchivoTexto.getPath());
this.setTitle("Editor Mj ["+ArchivoTexto.getName()+"]");
try {
bufferL = new BufferedReader(new FileReader(ArchivoTexto));
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
}
try {
while (( LineaT = bufferL.readLine()) != null){
//bufferL.re
//Hoja.setText(Hoja.getText()+LineaT+"\n");
VTexto.add(LineaT);
//VTexto.set(MaxLin, "-"+LineaT);
MaxLin++;
}
bufferL.close();
} catch (IOException e2) {
e2.printStackTrace();
return false;
}
System.out.println(RecentlyFiles.setRecently(ArchivoTexto.getPath()));
return true;
}
public void LoadBufferLine(){
try {
bufferL = new BufferedReader(new FileReader(ArchivoTexto));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void Abrir(){
if(openFile()){
//LoadBufferLine();
MaxLin=0;
ArchivoCompleto = false;
if(!ShowFile()){
LStatus.setText("Error al cargar archivo");
}
else{
LStatus.setText("Cargando archivo en buffer, enter para continuar");
}
}
else{
LStatus.setText("Se canceló la carga de archivo");
}
if(Hoja.getBackground()==Color.gray)
Hoja.setBackground(Color.white);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==smAbrir){
Abrir();
}
JMenuItem source = (JMenuItem) (e.getSource());
for(int i =0;i<TotalR;i++){
if (source.getText().compareTo(RecentlyPaths[i].getName()) == 0) {
MaxLin=0;
ArchivoCompleto = false;
ArchivoTexto = RecentlyPaths[i];
if(!ShowFile()){
LStatus.setText("Error al cargar archivo");
}
else{
LStatus.setText("Cargando archivo en buffer, enter para continuar");
}
if(Hoja.getBackground()==Color.gray)
Hoja.setBackground(Color.white);
}
}
if(e.getSource()==smCerrar){
System.exit(0);
}
}
private int i=0;
private boolean ArchivoCompleto = false;
private boolean ArchivoNuevo = true;
public void keyPressed(KeyEvent e) {
//System.out.println("*"+e.getKeyCode());
if(e.getKeyCode()==KeyBoard.ENTER&&!ArchivoNuevo){
if(MaxLin>i&&!ArchivoCompleto){
Hoja.setText(Hoja.getText()+VTexto.get(i)+"\n");
i++;
InfoCursor.setText("Columna: "+VTexto.get(i-1).length()+ " Linea: "+i );
LStatus.setText("Se cargo la linea: "+i);
}
else{
i=0;
ArchivoCompleto=true;
LStatus.setText("Se llego al final del archivo");
InfoCursor.setText("Columna: 0 Linea: "+MaxLin );
}
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
//System.out.println("*"+e.getKeyCode());
//System.out.println("+"+e.getKeyChar());
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
//System.out.println("*"+e.getKeyCode());
//System.out.println("+"+e.getKeyChar());
}
}