package ksiazka.kucharska;
|
|
|
|
import java.awt.Graphics2D;
|
|
import java.awt.RenderingHints;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
|
|
import javax.imageio.ImageIO;
|
|
import javax.swing.DefaultListModel;
|
|
import javax.swing.ImageIcon;
|
|
import javax.swing.JFileChooser;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JList;
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.event.DocumentEvent;
|
|
import javax.swing.event.DocumentListener;
|
|
import javax.swing.event.ListSelectionEvent;
|
|
import javax.swing.event.ListSelectionListener;
|
|
|
|
import db.SearchRecipeAll;
|
|
import db.Cookbook;
|
|
import db.SearchRecipe;
|
|
import db.SearchRecipeNameTag;
|
|
|
|
public class CB_Controller {
|
|
private static CB_View theView;
|
|
private static CB_Model theModel;
|
|
|
|
public CB_Controller(CB_View theView, CB_Model theModel) {
|
|
CB_Controller.theView = theView;
|
|
CB_Controller.theModel = theModel;
|
|
CB_Controller.theView.addListener(new AddListener());
|
|
CB_Controller.theView.delListener(new DelListener());
|
|
CB_Controller.theView.loadListener(new LoadListener());
|
|
CB_Controller.theView.cancelListener(new CancelListener());
|
|
CB_Controller.theView.saveListener(new SaveListener());
|
|
CB_Controller.theView.listSelectListener(new SelectionListener());
|
|
CB_Controller.theView.searchTypeListener(new SearchListener());
|
|
}
|
|
|
|
public void fillList(){
|
|
Cookbook myCb = new Cookbook();
|
|
SearchRecipe sr;
|
|
if (theView.getSearchValue() != "") {
|
|
sr = new SearchRecipeNameTag(theView);
|
|
}
|
|
else
|
|
{
|
|
sr = new SearchRecipeAll(theView);
|
|
}
|
|
List<String> names = sr.obtainRecipeNames();
|
|
|
|
theView.setRecipesList(names);
|
|
myCb.closeConnection();
|
|
}
|
|
public static void fillComponents(String name){
|
|
Cookbook myCb = new Cookbook();
|
|
theModel = myCb.selectRecipe(name);
|
|
theView.setRecipeTitle(theModel.getName());
|
|
theView.setRecipeIngredients(theModel.getIngredients());
|
|
theView.setRecipeDescription(theModel.getDescription());
|
|
theView.setRecipeTags(theModel.getTags());
|
|
theView.setRecipeIcon(theModel.getImage());
|
|
theView.resetCaretPositions();
|
|
myCb.closeConnection();
|
|
}
|
|
public static void addNewRecipe(){
|
|
Cookbook myCb = new Cookbook();
|
|
|
|
RecipeManager rm = new RecipeManager();
|
|
rm.setRecipeBuilder(new NewRecipeBuilder(theView));
|
|
rm.constructRecipe();
|
|
|
|
CB_Model obj = rm.getRecipe();
|
|
myCb.insertRecipe(obj);
|
|
|
|
myCb.closeConnection();
|
|
}
|
|
public static void removeRecipe(String name){
|
|
Cookbook myCb = new Cookbook();
|
|
myCb.deleteRecipe(name);
|
|
myCb.closeConnection();
|
|
}
|
|
public ImageIcon resizeImage(File f) {
|
|
//File file = f;
|
|
ImageIcon iconLogo=null;
|
|
try {
|
|
BufferedImage srcImg = ImageIO.read(f);
|
|
int w = (int)Math.ceil(srcImg.getWidth()/(double)srcImg.getHeight()*theView.getImgRecipe().getHeight());
|
|
|
|
BufferedImage resizedImg = new BufferedImage(w, theView.getImgRecipe().getHeight(), BufferedImage.TYPE_INT_ARGB);
|
|
Graphics2D g2 = resizedImg.createGraphics();
|
|
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
|
|
g2.drawImage(srcImg, 0, 0, w, theView.getImgRecipe().getHeight(), null);
|
|
g2.dispose();
|
|
iconLogo = new ImageIcon(resizedImg);
|
|
|
|
|
|
} catch (IOException e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
return iconLogo;
|
|
}
|
|
|
|
class AddListener implements ActionListener{
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
try{
|
|
theView.ActivateAddMenu();
|
|
}
|
|
|
|
catch(NumberFormatException ex){
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
class DelListener implements ActionListener{
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
try{
|
|
JList recipesList = theView.getRecipesList();
|
|
DefaultListModel model = (DefaultListModel) recipesList.getModel();
|
|
if (recipesList.getSelectedIndex() != -1)
|
|
{
|
|
int dialogResult = JOptionPane.showConfirmDialog (null, "Czy na pewno chcesz usunąć przepis?", "Pytanie", JOptionPane.YES_NO_OPTION);
|
|
if(dialogResult == JOptionPane.YES_OPTION){
|
|
removeRecipe(recipesList.getSelectedValue().toString());
|
|
model.remove(recipesList.getSelectedIndex());
|
|
if (recipesList.getModel().getSize()>0)
|
|
{
|
|
recipesList.setSelectedIndex(0);
|
|
fillComponents(recipesList.getSelectedValue().toString());
|
|
}
|
|
else
|
|
{
|
|
theView.setRecipeTitle("Nazwa przepisu");
|
|
theView.setRecipeIngredients("");
|
|
theView.setRecipeDescription("");
|
|
theView.setRecipeTags("");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
catch(NumberFormatException ex){
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
class LoadListener implements ActionListener{
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
try{
|
|
JFileChooser fcImg = theView.getFileChooser();
|
|
int returnVal = fcImg.showOpenDialog(theView);
|
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
|
theView.getImgRecipe().setIcon(resizeImage(fcImg.getSelectedFile()));
|
|
}
|
|
}
|
|
catch(NumberFormatException ex){
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
class CancelListener implements ActionListener{
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
try{
|
|
theView.DeactivateAddMenu();
|
|
JList recipesList = theView.getRecipesList();
|
|
if(recipesList.getSelectedIndex() != -1)
|
|
fillComponents(recipesList.getSelectedValue().toString());
|
|
}
|
|
|
|
catch(NumberFormatException ex){
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
class SaveListener implements ActionListener{
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
try{
|
|
addNewRecipe();
|
|
theView.setRecipesListItem(theView.getRecipeEdTitle());
|
|
theView.DeactivateAddMenu();
|
|
theView.getRecipesList().setSelectedIndex(theView.getRecipesList().getModel().getSize()-1);
|
|
fillComponents(theView.getRecipesList().getSelectedValue().toString());
|
|
}
|
|
|
|
catch(NumberFormatException ex){
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
class SelectionListener implements ListSelectionListener{
|
|
|
|
public void valueChanged(ListSelectionEvent e) {
|
|
|
|
try{
|
|
JList recipesList = theView.getRecipesList();
|
|
if(recipesList.getSelectedIndex() != -1)
|
|
fillComponents(recipesList.getSelectedValue().toString());
|
|
}
|
|
|
|
catch(NumberFormatException ex){
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
class SearchListener implements DocumentListener{
|
|
|
|
public void changedUpdate(DocumentEvent e) {
|
|
fillList();
|
|
}
|
|
|
|
public void insertUpdate(DocumentEvent e) {
|
|
fillList();
|
|
}
|
|
|
|
public void removeUpdate(DocumentEvent e) {
|
|
fillList();
|
|
}
|
|
}
|
|
}
|