package jrar;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
public class JRar extends JFrame{
private JPanel glownyPanel = new JPanel();
private JPanel dolnyPanel = new JPanel();
private JTable tabela = new JTable(new ModelTabeli());
private JScrollPane scrollTabeli = new JScrollPane(tabela);
private JButton dodaj = new JButton("Dodaj plik");
private JButton usun = new JButton("Usuń plik");
private JButton wyczysc = new JButton("Wyczyść");
private JFileChooser wyborPlikow = new JFileChooser();
JRar(){
this.setLayout(new BorderLayout());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(640, 480);
this.setTitle("JRar");
this.setResizable(false);
initComponent();
}
private void initComponent(){
dodaj.addActionListener(new DodajPlik());
wyczysc.addActionListener(new Wyczysc());
usun.addActionListener(new Usun());
tabela.setFillsViewportHeight(true);
// Ustawienie szerokości kolumn
// TableColumn kolumny;
// kolumny = tabela.getColumnModel().getColumn(0);
// kolumny.setMinWidth(480);
// Ustawienie wysokości wiersza
tabela.setRowHeight(20);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(scrollTabeli, javax.swing.GroupLayout.DEFAULT_SIZE, 620, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(dodaj)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(usun)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(wyczysc)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scrollTabeli, javax.swing.GroupLayout.PREFERRED_SIZE, 326, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(dodaj)
.addComponent(usun)
.addComponent(wyczysc))
.addContainerGap(81, Short.MAX_VALUE))
);
pack();
}
public static void main(String[] args){
new JRar().setVisible(true);
}
private class DodajPlik implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
wyborPlikow.setMultiSelectionEnabled(true);
int wybor = wyborPlikow.showOpenDialog(rootPane);
if(wybor == 0)
ModelTabeli.dodajDoListy(wyborPlikow.getSelectedFiles());
repaint();
}
}
private class Wyczysc implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
ArrayList<File> lista = ModelTabeli.getLista();
lista.clear();
ModelTabeli.setLista(lista);
repaint();
}
}
private class Usun implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
int zaznaczone = tabela.getSelectedRow();
ArrayList<File> lista = ModelTabeli.getLista();
lista.remove(zaznaczone);
ModelTabeli.setLista(lista);
tabela.clearSelection();
repaint();
}
}
}
class ModelTabeli extends AbstractTableModel{
private String[] columns = {"Nazwa", "Rozmiar"};
private static ArrayList<File> lista = new ArrayList<>();
@Override
public int getRowCount() {
return lista.size();
}
@Override
public int getColumnCount() {
return columns.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
File plik = (File) lista.get(rowIndex);
if(columnIndex == 0){
return plik.getAbsolutePath();
}
else{
String rozmiar = ((plik.length()/1024) + " KB");
return rozmiar;
}
}
@Override
public String getColumnName(int col) {
return columns[col];
}
public static void dodajDoListy(File[] pliki){
for(int i =0; i<pliki.length; i++)
lista.add(pliki[i]);
}
public static ArrayList<File> getLista(){
return lista;
}
public static void setLista(ArrayList<File> listaPrzyslana){
lista = listaPrzyslana;
}
}