https://hal.archives-ouvertes.fr/hal-02404862
Raw File
Tip revision: 759bd8995e51c4e40aa72fd5657d5e6e04c6da89 authored by Software Heritage on 04 February 2020, 13:44:27 UTC
hal: Deposit 405 in collection hal
Tip revision: 759bd89
TreeListesProjetPanel.java
package vue.projetPanelSup;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ResourceBundle;

import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

import renderers.RoundedPanel;
import modeles.evenements.ProjetChangedEvent;
import modeles.evenements.ProjetListeAddedEvent;
import modeles.trees.ListesTreeModel;
import controleurs.ProjetController;
import controleurs.vuesabstraites.ProjetView;

public class TreeListesProjetPanel extends ProjetView {

	private RoundedPanel panel;
	private JTree treeProjet;
	private int numListeSelected;
	private ListesTreeModel listesTreeModel;
	private JScrollPane scrollTreeListes;
	private ResourceBundle infosListeListesPanel;

	public TreeListesProjetPanel(ProjetController projetController, ResourceBundle infosListeListesPanel) {
		super(projetController);
		this.infosListeListesPanel = infosListeListesPanel;
	}

	public JPanel getPanel() {
		panel = new RoundedPanel();
		panel.setPreferredSize(new Dimension(300, 100));
		panel.setMaximumSize(new Dimension(300, 100));
		panel.setMinimumSize(new Dimension(300, 100));
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.gridwidth = 2;
		gbc.insets = new Insets(0,10,0,10);
		gbc.ipadx = 10;
		
		listesTreeModel = new ListesTreeModel();
		treeProjet = new JTree();
		treeProjet.setModel(listesTreeModel);
		TreeCellRenderer cr = treeProjet.getCellRenderer();
		if (cr instanceof DefaultTreeCellRenderer) {
			DefaultTreeCellRenderer dtcr = (DefaultTreeCellRenderer) cr;
			dtcr.setMinimumSize(new Dimension(350, 20));
			dtcr.setPreferredSize(new Dimension(350, 20));
		}
		treeProjet.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
		treeProjet.addTreeSelectionListener(new TreeSelectionListener() {
			@Override
			public void valueChanged(TreeSelectionEvent tsl) {
				DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) treeProjet.getLastSelectedPathComponent();
				// System.out.println("selectedNode = " + selectedNode);
				if (selectedNode != null && selectedNode.isLeaf() && !selectedNode.isRoot()) {
					String sNode = selectedNode.toString();
					String[] tabNode = sNode.split("\\) ");
					numListeSelected = Integer.valueOf(tabNode[0].substring(1));
				} else
					numListeSelected = 0;
				// System.out
				// .println("TreeListesProjetPanel - getPanel - valueChanged : numListeSelected = "
				// + numListeSelected);
				getProjetController().notifyListeSelected(numListeSelected);
			}
		});

		MouseListener ml = new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent e) {
				int selRow = treeProjet.getRowForLocation(e.getX(), e.getY());
				if (selRow != -1) {
					if (e.getClickCount() == 2) {
						// System.out.println("double clic : " + selRow + " , "
						// + selPath);
						DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) treeProjet.getLastSelectedPathComponent();
						// System.out.println("selectedNode = " + selectedNode);
						String oldName;
						if (selectedNode == null || !selectedNode.isLeaf() || selectedNode.isRoot()) {
							numListeSelected = 0;
							oldName = "";
						} else {
							String sNode = selectedNode.toString();
							String[] tabNode = sNode.split("\\) ");
							numListeSelected = Integer.valueOf(tabNode[0].substring(1));
							oldName = tabNode[1].trim();
						}
						// System.out.println("numListeSelected = "
						// + numListeSelected);
						if (numListeSelected != 0) {
							getProjetController().notifyModifyNomListe(oldName);

						}
					}
				}
			}
		};
		treeProjet.addMouseListener(ml);
		// treeProjet.setRootVisible(false);
		scrollTreeListes = new JScrollPane(treeProjet);
		scrollTreeListes.setPreferredSize(new Dimension(400,100));
		scrollTreeListes.setMaximumSize(new Dimension(400,100));
		scrollTreeListes.setMinimumSize(new Dimension(400,100));
		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.weightx = 1.0;
		gbc.anchor = GridBagConstraints.NORTHWEST;
		panel.add(scrollTreeListes, gbc);
		return panel;
	}

	public int getRowSelectedNode(Object rootListe, String nomListe, int numeroListe) {
		int row = 0;
		TreeNode root = (TreeNode) rootListe;
		for (int i = 0; i < root.getChildCount(); i++) {
			if (root.getChildAt(i).isLeaf()) {
				String txtNode = root.getChildAt(i).toString();
				String[] tabNode = txtNode.split("\\) ");
				String numeroListeRecherche = tabNode[0];
				numeroListeRecherche = numeroListeRecherche.replace("(", "");
				int iNumeroListeRecherche = Integer.parseInt(numeroListeRecherche);
				String nomListeRecherche = tabNode[1];
				if (numeroListe == iNumeroListeRecherche && nomListe.equals(nomListeRecherche)) {
					row = i + 1;
					break;
				}
			}
		}
		return row;
	}

	@Override
	public JPanel getInfosProjetPanel() {
		return null;
	}

	@Override
	public JMenuBar getMenuBar() {
		return null;
	}

	@Override
	public JPanel getListesListePanel() {
		return getPanel();
	}

	@Override
	public void setLabelProgress(String string) {
		// TODO Auto-generated method stub

	}

	@Override
	public void showActivites() {
		// TODO Auto-generated method stub

	}

	@Override
	public void updateProgress() {
		// TODO Auto-generated method stub

	}

	@Override
	public void setStepProgress(int step) {
		// TODO Auto-generated method stub

	}

	@Override
	public void close() {
		// TODO Auto-generated method stub

	}

	@Override
	public void resetProgress() {
		// TODO Auto-generated method stub

	}

	@Override
	public void appendTxtArea(String txt) {
		// TODO Auto-generated method stub

	}

	@Override
	public JProgressBar getProgressBar() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void projetChanged(ProjetChangedEvent event) {
		listesTreeModel = new ListesTreeModel(getProjetController().getNomProjet(), getProjetController().getSetListes());
		treeProjet.setModel(listesTreeModel);

		if (event.getListeSelected() != null && event.getListeSelected().getNumero() != 0) {
			// treeProjet.setCellRenderer(new listeListesRenderer());
			// System.out
			// .println("TreeListesProjetPanel - projetChanged : listeSelected = "
			// + event.getListeSelected().getNom());
			treeProjet.expandRow(0);
			treeProjet.setSelectionRow(getRowSelectedNode(listesTreeModel.getRoot(), event.getListeSelected().getNom(), event.getListeSelected().getNumero()));

			TreePath treePathSelectedList = treeProjet.getSelectionPath();
			treeProjet.scrollPathToVisible(treePathSelectedList);
			// treeProjet.updateUI();
		}
	}

	@Override
	public void projetListeAdded(ProjetListeAddedEvent event) {
		listesTreeModel.addNewListe(event.getNewListe().getNumero(), event.getNewListe());
		treeProjet.expandRow(0);
		treeProjet.setSelectionRow(getRowSelectedNode(listesTreeModel.getRoot(), event.getNewListe().getNom(), event.getNewListe().getNumero()));
		TreePath treePathSelectedList = treeProjet.getSelectionPath();
		treeProjet.scrollPathToVisible(treePathSelectedList);
		// treeProjet.updateUI();
	}
}
back to top