IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

CTabFolder & CTabItem => Widget has the wrong parent


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Par défaut CTabFolder & CTabItem => Widget has the wrong parent
    J'ai un probleme insoluble (pour moi ) j'essaie de crééer une vue qui affiche des icones dans des dossiers, dans cette vue je crée un onglet pour chaque dossier.

    Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
     
    public String iconsPath = "C:/Documents and Settings/darty/Bureau/Icons2";  //path to folder containing icons
     
    	public String iconFolder1 = iconsPath+"/Action";   
    	public String iconFolder2 = iconsPath+"/Annotation";
    	public String iconFolder3 = iconsPath+"/Moyen Fixe";
    	public String iconFolder4 = iconsPath+"/Moyen Mobile";
     
    	public Composite c1, c2, c3, c4, cconf;
    	public CTabFolder tabfolder;
    	public Action actionOpenFolder, actionOpenConfig;
     
    public Composite createTable(CTabFolder folder, UIIconGroup oIconGroup) {
    		ScrolledComposite scroller = new ScrolledComposite(folder, SWT.V_SCROLL | SWT.H_SCROLL);
     
    		final Composite composite = new Composite(scroller, SWT.NONE);
    		composite.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));    
     
    		Vector vtItems = oIconGroup.getItems();
    		int count = vtItems.size();
     
    		GridLayout gridLayout = new GridLayout();
    		gridLayout.numColumns = count;
    		gridLayout.makeColumnsEqualWidth = false;
    		gridLayout.verticalSpacing = 0;
     
    		composite.setLayout(gridLayout);
     
    		for (int i=0; i<count; i++) {
    			final UIIconItem oItem = (UIIconItem)vtItems.elementAt(i);
    			final Label label1 = new Label(composite, SWT.LEFT);
    			label1.setImage(oItem.getImage());
    			label1.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
    			label1.setToolTipText(oItem.getName());			
     
    			final DragSource dragSource = new DragSource(label1, DND.DROP_COPY);
    			Transfer[] formats = new Transfer[] { TextTransfer.getInstance()};
    			dragSource.setTransfer(formats);
    			dragSource.addDragListener(new DragSourceListener() {
    				public void dragStart(DragSourceEvent event) {
    					event.doit = true;
    				}
     
    				public void dragSetData(DragSourceEvent event) {
    					if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
    						String sData = oItem.getImageString();
    						sData = "Citise"+sData;
    						event.data = sData;        
    					}
    				}
     
    				public void dragFinished(DragSourceEvent event) {}
    			});
     
    			label1.addDisposeListener(new DisposeListener() {
    				public void widgetDisposed(DisposeEvent e) {
    					dragSource.dispose();
    				}
    			});
    		}		
    		scroller.setContent(composite);   
    		scroller.setExpandHorizontal(true);
    		scroller.setExpandVertical(true);
    		scroller.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    		return scroller;
    	}
     
    public UIIconGroup createIconGroup(String iconFolder) {
    		UIIconGroup ig = new UIIconGroup();
    		Vector<UIIconItem> iconList=new Vector<UIIconItem>();		
    		File folder = new File(iconFolder);
    		String[] children = folder.list();		
    	    if (children != null) {
    	        for (int i=0; i<children.length; i++) {
    	        	if (!children[i].equals("Thumbs.db")) {
    		            String filename = iconFolder+"/"+children[i];
    		            UIIconItem item= new UIIconItem();
    		            Image icon= new Image(Display.getCurrent(),filename);
    		            item.setImageString(filename);
    		            item.setName(children[i]);
    		            item.setImage(icon);
    		            iconList.addElement(item);
    	        	}
    	        }
    	    }
            ig.setItems(iconList);
            String[] path = iconFolder.split("/");
            ig.setFolderName(path[path.length-1]);		
    		return ig;
    	}
     
    public Composite createConfig(CTabFolder folder) {		
    		ScrolledComposite scrollerConf = new ScrolledComposite(folder, SWT.V_SCROLL | SWT.H_SCROLL);
     
    		final Composite compositeConf = new Composite(scrollerConf, SWT.NONE);
    		compositeConf.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));		
    		GridLayout gridLayoutConf = new GridLayout();
    		gridLayoutConf.numColumns = 3;
    		gridLayoutConf.makeColumnsEqualWidth = false;
    		gridLayoutConf.verticalSpacing = 0;
    		compositeConf.setLayout(gridLayoutConf);		
     
    		Label labelConfig = new Label(compositeConf, SWT.LEFT);
    		labelConfig.setText("Configuration");
    		labelConfig.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
     
    		scrollerConf.setContent(compositeConf);
    		return compositeConf;
    	}
     
    @Override
    	public void createPartControl(Composite parent) {
     
    		//ACTIONS
    		makeActions();
    		contributeToActionBars();
     
    		//NOUVEAU TABLEAU D'ONGLETS
    		tabfolder = new CTabFolder(parent, SWT.BORDER);
     
    		// Set up a gradient background for the selected tab
    		Display display = parent.getDisplay();
    	    tabfolder.setSelectionBackground(new Color[] {
    	        display.getSystemColor(SWT.COLOR_RED),
    	        display.getSystemColor(SWT.COLOR_YELLOW),
    	        display.getSystemColor(SWT.COLOR_DARK_BLUE)}, new int[] { 50,
    	        100});	
     
    		File f = new File(iconsPath);
     
    		if (f.exists() && f.isDirectory()) {
    			UIIconGroup myIconGroup1 = createIconGroup(iconFolder1);
    			UIIconGroup myIconGroup2 = createIconGroup(iconFolder2);
    			UIIconGroup myIconGroup3 = createIconGroup(iconFolder3);
    			UIIconGroup myIconGroup4 = createIconGroup(iconFolder4);
     
    			//ONGLET 1
    			CTabItem onglet1 = new CTabItem(tabfolder, SWT.NONE);
    			//onglet1.setText(myIconGroup1.getFolderName());
    			onglet1.setText("        "+myIconGroup1.getFolderName()+"         ");
    			c1=createTable(tabfolder, myIconGroup1);
    			onglet1.setControl( c1 );
     
    			//ONGLET 2
    			CTabItem onglet2 = new CTabItem(tabfolder, SWT.NONE);
    			onglet2.setText("      "+myIconGroup2.getFolderName()+"       ");
    			c2=createTable(tabfolder, myIconGroup2);
    			onglet2.setControl( c2 );
     
    			//ONGLET 3
    			CTabItem onglet3 = new CTabItem(tabfolder, SWT.NONE);
    			onglet3.setText("      "+myIconGroup3.getFolderName()+"      ");
    			c3 = createTable(tabfolder, myIconGroup3);
    			onglet3.setControl( c3 );
     
    			//ONGLET 4
    			CTabItem onglet4 = new CTabItem(tabfolder, SWT.NONE);
    			onglet4.setText("     "+myIconGroup4.getFolderName()+"     ");
    			c4 = createTable(tabfolder, myIconGroup4);
    			onglet4.setControl( c4 );
     
    		} else {
    			CTabItem ongletConfig = new CTabItem(tabfolder, SWT.NONE);
    			ongletConfig.setText("Configuration");
    			cconf = createConfig(tabfolder);
    			ongletConfig.setControl(cconf);
    		}
    	}
    Je teste si le dossier des icones existe, si ce n'est pas le cas je veux afficher un onglet de configuration...
    Seulement a chaque fois que je lance ça et que le dossier n'existe pas, il m'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    java.lang.IllegalArgumentException: Widget has the wrong parent
    	at org.eclipse.swt.SWT.error(SWT.java:2926)
    	at org.eclipse.swt.SWT.error(SWT.java:2865)
    	at org.eclipse.swt.SWT.error(SWT.java:2836)
    	at org.eclipse.swt.custom.CTabItem.setControl(CTabItem.java:667)
    .....
    erreur a la ligne "ongletConfig.setControl(cconf);"

    Sachant que la création des 4 onglets marche trés bien quand le dossier existe et que le code est le même je ne trouve pas...

    PLEASE HELP

  2. #2
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Par défaut alo
    Personne ne peut m'aider ???
    (j'ai modifié setFocus() qui allait pas mais ça n'a rien changé...)

    Et plus que 2 jours pour rendre le projet.................

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Par défaut
    Dans ta méthode createConfig() tu renvoie compositeConf au lieu de scrollerConf

  4. #4
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Par défaut Ola
    Merci ça m'a déjà résolu un probleme...Comme d'habitude c'est une erreur à la con qui me fait galérer...

    Il me reste l'erreur "Une erreur s'est produite lors de l'activation de cette vue"...Mais je ne pense pas que qqun puisse trouver (sauf ceux qui developpent Udig)

Discussions similaires

  1. CardLayout Wrong parent
    Par kerlouan dans le forum Débuter
    Réponses: 0
    Dernier message: 23/09/2014, 21h44
  2. Réponses: 0
    Dernier message: 16/09/2011, 14h21
  3. Réponses: 2
    Dernier message: 03/03/2010, 12h05
  4. API jackcess-1.1.3 error class file has wrong version 49.0
    Par dalio2579 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/03/2006, 00h38
  5. [JDOM] The Content already has an existing parent
    Par F-GISD dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 21/07/2005, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo