diff --git a/src/mustic/gui/MainFrame.java b/src/mustic/gui/MainFrame.java index 02e75646ebf620d912ad823ef53c5aaa486caf4a..fdb54096484ee4c1ce67866ee1a59f09f327e70c 100644 --- a/src/mustic/gui/MainFrame.java +++ b/src/mustic/gui/MainFrame.java @@ -3967,7 +3967,7 @@ public class MainFrame extends JFrame { true); - t = new ClassificationThread(classif, classificationImage.getProgressBar(), + t = new ClassificationThread(classif, classificationImage.getProgressBar(),classificationImage.getStatusBar(), classificationImage, null, false, null); t.start(); try { diff --git a/src/mustic/gui/panels/classifier/ClassifierPanel.java b/src/mustic/gui/panels/classifier/ClassifierPanel.java index 5d1af0625759c7720f6d823ad996ab91ce4146de..6d4c6d96afba58de3fb1a0d4f4ff6bc29cbd0f64 100644 --- a/src/mustic/gui/panels/classifier/ClassifierPanel.java +++ b/src/mustic/gui/panels/classifier/ClassifierPanel.java @@ -695,8 +695,7 @@ public class ClassifierPanel extends JPanel { if (this.timeCheckBox.isSelected()) { classification.setTimeExec(1); } - - new ClassificationThread(classification, classificationImage.getProgressBar(), + new ClassificationThread(classification, classificationImage.getProgressBar(),classificationImage.getStatusBar(), classificationImage, this.rmiServer, false, null).start(); try { dataSession.associatedFrame.setMaximum(true); @@ -717,6 +716,7 @@ public class ClassifierPanel extends JPanel { // On lance le thread de classif new ClassificationThread(classification, ((ClassificationModel) this.container_).getProgressBar(), + ((ClassificationModel) this.container_).getStatusBar(), (ClassificationModel) this.container_, this.rmiServer, false, null).start(); } diff --git a/src/mustic/gui/panels/data/DataConstructPanel.java b/src/mustic/gui/panels/data/DataConstructPanel.java index 7ae9411f32358d98078491622d55ad1e0fa783a2..91ae32a6b23bafae36816ac5d2efc332f7e30400 100644 --- a/src/mustic/gui/panels/data/DataConstructPanel.java +++ b/src/mustic/gui/panels/data/DataConstructPanel.java @@ -124,32 +124,37 @@ public class DataConstructPanel extends JPanel implements ToUpdateObject { } private void generateData() { - ImageData data = null; - - if (sourcePanel.isSequenceMaskSelected() && sample instanceof ImageSampler - && imageSessions != null) { - List maskSequence = new ArrayList(); - boolean containsAtLeastOne = false; - for (ImageSession session : imageSessions) { - Mask m = session.getRawImage().getMask(); - maskSequence.add(m); - if (m != null) { - containsAtLeastOne = true; + new Thread() { + @Override + public void run() { + ImageData data = null; + + if (sourcePanel.isSequenceMaskSelected() && sample instanceof ImageSampler + && imageSessions != null) { + List maskSequence = new ArrayList(); + boolean containsAtLeastOne = false; + for (ImageSession session : imageSessions) { + Mask m = session.getRawImage().getMask(); + maskSequence.add(m); + if (m != null) { + containsAtLeastOne = true; + } + } + if (containsAtLeastOne) { + ((ImageSampler) sample).setMaskSequence(maskSequence); + } } + if (filesPaths.size() > 1) { + data = new ImageData(sample, filesPaths); + } else { + data = new ImageData(sample, filesPaths.get(0)); + } + MainFrame.getInstance().createDataSession(data); + + DataConstructFrame.getInstance().updateDataConstructPanel(); + DataConstructFrame.getInstance().dispose(); } - if (containsAtLeastOne) { - ((ImageSampler) sample).setMaskSequence(maskSequence); - } - } - if (filesPaths.size() > 1) { - data = new ImageData(sample, filesPaths); - } else { - data = new ImageData(sample, filesPaths.get(0)); - } - MainFrame.getInstance().createDataSession(data); - - DataConstructFrame.getInstance().updateDataConstructPanel(); - DataConstructFrame.getInstance().dispose(); + }.start(); } public void updateSamplingSelectionPanel() { diff --git a/src/mustic/io/ImageData.java b/src/mustic/io/ImageData.java index 1beb4af41f07af2996888f1e6483ef9ed5aa0eb0..3a23c59f9c29e4ffeccd856b7f04fc64e0421605 100644 --- a/src/mustic/io/ImageData.java +++ b/src/mustic/io/ImageData.java @@ -13,6 +13,7 @@ import jcl.data.sampling.Sampler; import jcl.utils.exceptions.MethodNotImplementedException; import mustic.gui.ImageSession; import mustic.gui.MainFrame; +import mustic.models.thread.ProgressThreadJCL; import mustic.utils.jclAdapters.ImageSampler; /** @@ -225,7 +226,7 @@ public class ImageData extends SimpleData implements Serializable { /** *

- * Construcor from an already built set of DataObject of a sampler, + * Constructor from an already built set of DataObject of a sampler, * the path is only used to gather the image informations *

* @@ -237,6 +238,7 @@ public class ImageData extends SimpleData implements Serializable { * a mask to apply to the sampler */ public ImageData(Sampler sampler, RawImage path, Mask mask) { + System.out.println("ImageData(Sampler sampler, RawImage path, Mask mask)"); if (MainFrame.DEBUG_MODE) { System.out.println(">> ImageData(Sampler,String) <<"); } @@ -269,7 +271,8 @@ public class ImageData extends SimpleData implements Serializable { dimensions[0] = rawImages.get(0).width; dimensions[1] = rawImages.get(0).height; -// new ProgressThreadJCL(sampler, MainFrame.getProgressBar(), MainFrame.getProgressStatus()).start(); + new ProgressThreadJCL(sampler, MainFrame.getProgressBar(), MainFrame.getProgressStatus()).start(); + if (mask != null) { currentView = sampler.getDataObjects(mask); } else { @@ -294,7 +297,7 @@ public class ImageData extends SimpleData implements Serializable { /** *

- * Construcor from an already built set of DataObject of a sampler, + * Constructor from an already built set of DataObject of a sampler, * the path is only used to gather the image informations *

* @@ -322,6 +325,8 @@ public class ImageData extends SimpleData implements Serializable { * a mask to apply to the sampler */ public ImageData(Sampler sampler, Vector images, Mask mask) { + System.out.println("ImageData(Sampler sampler, Vector images, Mask mask)"); + for(RawImage s : images) { this.rawImages.add(s); } diff --git a/src/mustic/models/gui/ClassificationModel.java b/src/mustic/models/gui/ClassificationModel.java index 8e7dc7517fa67b90594e58b56ec897f3dc1209b3..cfb43daffb4fb91284c40faf90fa3ae4d19d616e 100644 --- a/src/mustic/models/gui/ClassificationModel.java +++ b/src/mustic/models/gui/ClassificationModel.java @@ -33,6 +33,7 @@ import mustic.models.gui.panels.HybridClassificationMonitor; import mustic.models.gui.panels.MaclawClassificationMonitor; import mustic.models.gui.panels.ResultPanel; import mustic.models.gui.widgets.ClassificationManager; +import mustic.utils.tools.ProgressStatus; import net.infonode.tabbedpanel.Tab; import net.infonode.tabbedpanel.TabDragEvent; import net.infonode.tabbedpanel.TabEvent; @@ -289,6 +290,10 @@ public abstract class ClassificationModel extends JPanel { public JProgressBar getProgressBar() { return MainFrame.getProgressBar(); } + + public ProgressStatus getStatusBar() { + return MainFrame.getProgressStatus(); + } /** *

diff --git a/src/mustic/models/gui/panels/ClassifierPanel.java b/src/mustic/models/gui/panels/ClassifierPanel.java index 014994465846ae97b8e67f32a2f47b418dbe0f46..9e9b1e8f58e577d165a1c6894e4e30bd5944ae1e 100755 --- a/src/mustic/models/gui/panels/ClassifierPanel.java +++ b/src/mustic/models/gui/panels/ClassifierPanel.java @@ -534,7 +534,7 @@ public class ClassifierPanel extends JPanel { System.out.println("DEBUT CLASSIF"); /* On lance le thread de classification */ new ClassificationThread(classification, - this.container_.getProgressBar(), this.container_, + this.container_.getProgressBar(),this.container_.getStatusBar(), this.container_, this.rmiServer, false, null).start(); } diff --git a/src/mustic/models/thread/ClassificationThread.java b/src/mustic/models/thread/ClassificationThread.java index b6c049dbc73f0a5e9e541012a056c3f2beca4ef0..524f30df002f370e71a3a1ed5e9296402faf44f9 100755 --- a/src/mustic/models/thread/ClassificationThread.java +++ b/src/mustic/models/thread/ClassificationThread.java @@ -8,8 +8,10 @@ import jcl.Classification; import jcl.clustering.constraints.Constraint; import jcl.jcld.RmiServer; import jcl.learning.IterativeClassification; +import jcl.learning.LearningMethod; import jcl.learning.methods.multistrategy.samarah4.comm.ClassificationSAM4; import mustic.models.gui.ClassificationModel; +import mustic.utils.tools.ProgressStatus; /** *

@@ -28,6 +30,9 @@ public class ClassificationThread extends Thread { /** Barre d'avancement de la classification */ private JProgressBar progressBar_; + + /** Etat d'avancement de la classification */ + private ProgressStatus statusBar_; /** Server Rmi ou deporte le calcul */ private RmiServer rmiServer_; @@ -55,6 +60,18 @@ public class ClassificationThread extends Thread { * @param constraints * constraints used for the new iteration */ + public ClassificationThread(Classification classification, + JProgressBar progressBar, ProgressStatus statusBar, ClassificationModel container, + RmiServer rmiServer, boolean newIterationMode, Vector constraints) { + this.classification_ = classification; + this.progressBar_ = progressBar; + this.statusBar_ = statusBar; + this.container_ = container; + this.rmiServer_ = rmiServer; + this.newIterationMode = newIterationMode; + this.constraints = constraints; + } + public ClassificationThread(Classification classification, JProgressBar progressBar, ClassificationModel container, RmiServer rmiServer, boolean newIterationMode, Vector constraints) { @@ -70,10 +87,13 @@ public class ClassificationThread extends Thread { public void run() { /* Si on a une barre de progression on monitore la classification */ - if (this.rmiServer_ != null && !this.rmiServer_.useRmi()) - if (this.progressBar_ != null) - new ProgressThreadJCL(this.classification_.getLearningMethod(), - this.progressBar_).start(); + + if (this.progressBar_ != null && this.statusBar_ != null) { + LearningMethod lm = this.classification_.getLearningMethod(); + new ProgressThreadJCL(lm, this.progressBar_,this.statusBar_).start(); +// lm.incProgress(); +// lm.setStatus("Clustering test !"); + } /* teste si le calcul est a faire avec rmi */ if ((this.rmiServer_ != null) && (this.rmiServer_.useRmi())) { diff --git a/src/mustic/models/thread/ProgressThreadJCL.java b/src/mustic/models/thread/ProgressThreadJCL.java index 40a2b26e60d57780f6c4313d4688fa9cee1ec215..bce86f94e3047cf5d7705532ac4599a7bad9ef0e 100755 --- a/src/mustic/models/thread/ProgressThreadJCL.java +++ b/src/mustic/models/thread/ProgressThreadJCL.java @@ -1,5 +1,7 @@ package mustic.models.thread; +import java.util.Date; + import javax.swing.JProgressBar; import jcl.utils.Progressable; @@ -63,11 +65,13 @@ public class ProgressThreadJCL extends Thread { { while (prog != 100) { prog = this.p.getProgress(); -// status = this.p.getStatus(); + status = this.p.getStatus(); +// long time = new Date().getTime(); +// System.out.println("prog:"+prog+" status:"+status+" time : "+time); this.b.setValue(prog); MainFrame.getProgressStatus().setMessage(status); try { - sleep(1000); + sleep(200); } catch (Exception ex) { ex.printStackTrace(); System.exit(1); @@ -82,7 +86,7 @@ public class ProgressThreadJCL extends Thread { prog = this.p.getProgress(); this.b.setValue(prog); try { - sleep(1000); + sleep(200); } catch (Exception ex) { ex.printStackTrace(); System.exit(1); diff --git a/src/mustic/utils/jclAdapters/ImageSampler.java b/src/mustic/utils/jclAdapters/ImageSampler.java index 8b9cc4b88bf80dbc512240bbfe3ec3bf656c7b34..8b36da587bfe7ff2a493606041c8726fa0252421 100644 --- a/src/mustic/utils/jclAdapters/ImageSampler.java +++ b/src/mustic/utils/jclAdapters/ImageSampler.java @@ -253,8 +253,9 @@ public class ImageSampler extends Sampler { * @return the sample */ private List getDataFromOneImage() { + //System.out.println("getDataFromOneImage()"); + setStatus("Loading sampler..."); List result = new ArrayList(sizeByCount); - setStatus("loading sampler..."); int index = 0; int x = 0; int y = 0; @@ -279,8 +280,7 @@ public class ImageSampler extends Sampler { } resetProgress(); - int jalon = sizeByCount/10; - + int jalon = sizeByCount/100; for(int i = 0; i < sizeByCount ; i++) { index = getIndex(i); x = (index) % imageWidth; @@ -297,8 +297,11 @@ public class ImageSampler extends Sampler { if(i == jalon) { - jalon+=sizeByCount/10; + jalon+=sizeByCount/100; + //System.out.println("jalon:"+jalon); incProgress(); + System.out.print(" p:"+this.progress); + } } endProgress(); @@ -317,6 +320,7 @@ public class ImageSampler extends Sampler { * @return the sample */ private List getDataFromOneImage(final Mask mask, int mandatoryPixelCount) { + System.out.println("getDataFromOneImage(final Mask mask, int mandatoryPixelCount)"); List result = new ArrayList(sizeByCount); setStatus("loading sampler..."); int x = 0; @@ -1265,7 +1269,7 @@ public class ImageSampler extends Sampler { @Override public void incProgress() { - this.progress+=progressM/10; + this.progress+=progressM/100; }