Statistiques
| Révision :

root / src / gZFS / gui.java @ 53

Historique | Voir | Annoter | Télécharger (145,86 ko)

1

    
2
/*******************************************************************
3
 * 
4
 * Copyright (C) 2013 Kevin Reverchon
5
 * This file/program is part of gZFS free software
6
 * See COPYING file for details
7
 * 
8
 *******************************************************************/
9

    
10

    
11

    
12
package gZFS;
13

    
14
import java.util.ArrayList;
15
import java.util.Arrays;
16
import java.util.Collections;
17
import java.util.Date;
18
import java.util.Hashtable;
19
import java.util.List;
20

    
21
import org.apache.log4j.Level;
22
import org.apache.log4j.Logger;
23
import org.eclipse.jface.layout.TreeColumnLayout;
24
import org.eclipse.swt.SWT;
25
import org.eclipse.swt.custom.ScrolledComposite;
26
import org.eclipse.swt.graphics.Color;
27
import org.eclipse.swt.graphics.Font;
28
import org.eclipse.swt.graphics.Image;
29
import org.eclipse.swt.layout.FillLayout;
30
import org.eclipse.swt.layout.GridData;
31
import org.eclipse.swt.layout.GridLayout;
32
import org.eclipse.swt.widgets.Button;
33
import org.eclipse.swt.widgets.Combo;
34
import org.eclipse.swt.widgets.Composite;
35
import org.eclipse.swt.widgets.Display;
36
import org.eclipse.swt.widgets.Event;
37
import org.eclipse.swt.widgets.ExpandBar;
38
import org.eclipse.swt.widgets.ExpandItem;
39
import org.eclipse.swt.widgets.Group;
40
import org.eclipse.swt.widgets.Label;
41
import org.eclipse.swt.widgets.Listener;
42
import org.eclipse.swt.widgets.Menu;
43
import org.eclipse.swt.widgets.MenuItem;
44
import org.eclipse.swt.widgets.MessageBox;
45
import org.eclipse.swt.widgets.ProgressBar;
46
import org.eclipse.swt.widgets.Shell;
47
import org.eclipse.swt.widgets.TabFolder;
48
import org.eclipse.swt.widgets.TabItem;
49
import org.eclipse.swt.widgets.Table;
50
import org.eclipse.swt.widgets.TableColumn;
51
import org.eclipse.swt.widgets.TableItem;
52
import org.eclipse.swt.widgets.Text;
53
import org.eclipse.swt.widgets.Tree;
54
import org.eclipse.swt.widgets.TreeItem;
55
import org.eclipse.wb.swt.SWTResourceManager;
56
import org.jfree.chart.JFreeChart;
57
import org.jfree.data.general.PieDataset;
58
import org.jfree. experimental.chart.swt.ChartComposite;
59

    
60
import com.ibm.icu.math.BigDecimal;
61

    
62
public class gui {
63

    
64
        private Logger log = Logger.getLogger(getClass().getPackage().getName()+" "+getClass().getCanonicalName());
65
        private Composite compositeConfig;
66
        private Composite compositeZpoolConfig;
67
        private Composite compositeTabVolConfig;
68
        private Composite compositeCreateVolFS;
69
        private Composite compositeIscsi;
70
        private Composite compositeSnapshot;
71
        private Composite compositeReplica;
72
        private Composite compositeWidgetCreateVolFS;
73
        private Composite compositeWidgetDisks;
74
        private Composite compositeDisks;
75

    
76

    
77
        private Group groupCreateVolFS;
78
        private Group groupActiveIscsi;
79
        private Group groupDisks;
80
        private ScrolledComposite scrolledCreateVol;
81
        private ScrolledComposite scrolledDisks;
82
        private ChartComposite chartVolumeComposite = null;
83
        private ChartComposite chartZpoolProvionedComposite = null;
84
        private ChartComposite chartZpoolUsedComposite = null;
85
        private GridData gridDataChart;
86

    
87
        protected Shell shell;
88
        private zfs zfs = new zfs();
89
        private zfs zsnap = new zfs();
90
        private guiTrt guiTrt = new guiTrt();
91
        private Hashtable<String,Float> dataCharset = new Hashtable<String, Float>();
92

    
93
        private List<Object> zfsList;
94
        private String keyProp;
95
        private List<Label> labelsField= new ArrayList<Label>();
96
        private List<Text> textsField= new ArrayList<Text>();
97
        private List<Combo> combosField= new ArrayList<Combo>();
98

    
99
        private List<Label> labelsFieldServer= new ArrayList<Label>();
100
        private List<Text> textsFieldServer= new ArrayList<Text>();
101
        private List<Combo> combosFieldServer= new ArrayList<Combo>();
102

    
103
        private List<Label> labelsFieldPool= new ArrayList<Label>();
104
        private List<Text> textsFieldPool = new ArrayList<Text>();
105
        private List<Combo> combosFieldPool = new ArrayList<Combo>();
106

    
107
        private Combo comboType4CreateVolFS ;
108
        private Combo comboZpool4CreateVolFS;
109

    
110
        private List<Label> labelsFieldCreateVol= new ArrayList<Label>();
111
        private List<Text> textsFieldCreateVol = new ArrayList<Text>();
112
        private List<Combo> combosFieldCreateVol = new ArrayList<Combo>();
113

    
114
        private List<Label> labelsFieldCreateIscsi= new ArrayList<Label>();
115
        private List<Text> textsFieldCreateIscsi = new ArrayList<Text>();
116
        private List<Combo> combosFieldCreateIscsi = new ArrayList<Combo>();
117

    
118
        private List<Label> labelsFieldAddIscsi= new ArrayList<Label>();
119
        private List<Text> textsFieldAddIscsi = new ArrayList<Text>();
120
        private List<Combo> combosFieldAddIscsi = new ArrayList<Combo>();
121
        private List<TableColumn> tablecolumnsFieldAddIscsi = new ArrayList<TableColumn>();
122
        private Table tableIscsiSession;
123

    
124

    
125
        private List<Label> labelsFieldSnapshots= new ArrayList<Label>();
126
        private List<Text> textsFieldSnapshots = new ArrayList<Text>();
127
        private List<Label> labelsFieldSnapshotsValue= new ArrayList<Label>();
128
        private List< org.eclipse.swt.widgets.List > listsFieldSnaphots = new ArrayList<org.eclipse.swt.widgets.List >();
129

    
130

    
131
        private List<Label> labelsFieldReplica= new ArrayList<Label>();
132
        private List<Text> textsFieldReplica = new ArrayList<Text>();
133
        private List<Label> labelsFieldReplicaValue= new ArrayList<Label>();
134
        private List< org.eclipse.swt.widgets.List > listsFieldReplica = new ArrayList<org.eclipse.swt.widgets.List >();
135
        private List<Combo> combosFieldReplica = new ArrayList<Combo>();
136

    
137
        private List<Label> labelsFieldZRaid= new ArrayList<Label>();
138
        private List<Label> labelsFieldDisks= new ArrayList<Label>();
139

    
140
        private Image imageStorage= SWTResourceManager.getImage(gui.class, "/images/storage-32px.png");
141
        private Image imageServerOnline = SWTResourceManager.getImage(gui.class, "/images/enable-server-icon-32px.png");
142
        private Image imageServerOffline = SWTResourceManager.getImage(gui.class, "/images/off-server-32px.png");
143
        private Image imageStorageOnline = SWTResourceManager.getImage(gui.class, "/images/storage-32px.png");
144
        private Image imageStorageOffline = SWTResourceManager.getImage(gui.class, "/images/storage-offline-32px.png");
145
        private Image imageFSOnline = SWTResourceManager.getImage(gui.class, "/images/zfs-fs-online-32px.png");
146
        private Image imageFSOffline = SWTResourceManager.getImage(gui.class, "/images/zfs-fs-offline-32px.png");
147
        private Image imageStorageServer = SWTResourceManager.getImage(gui.class, "/images/storage-server-32px.png");
148
        private Image imageSnapshotOnline = SWTResourceManager.getImage(gui.class, "/images/snapshot-32px.png");
149
        private Image imageSnapshotOffline = SWTResourceManager.getImage(gui.class, "/images/snapshot-offline-32px.png");
150
        private Image imageHardDisk = SWTResourceManager.getImage(gui.class, "/images/hard-disk-72px.png");
151
        private Image imageHardDiskOffline = SWTResourceManager.getImage(gui.class, "/images/hard-disk-offline-72px.png");
152
        private Image imageHardDiskOnline = SWTResourceManager.getImage(gui.class, "/images/hard-disk-online-72px.png");
153

    
154
        private Color labelTitleBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT);
155
        private Color labelFieldBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
156
        private Color textFieldBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
157
        private Color groupBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
158
        private Color compositeBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
159
        private Color tabFolderBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT);
160
        private Color tabFolderForegroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
161

    
162
        private Tree tree;
163
        private Tree treeZpool;
164
        private Tree treeSnapshots;
165
        private TabFolder tabFolderNav;
166
        private TabFolder tabFolderConfig;
167
        private TabItem tbtmConfig;
168
        private TabItem tbtmZpoolConfig;
169
        private TabItem tbtmSettings;
170
        private TabItem tbtmCreateVolFS;
171
        private TabItem tbtmIscsi;
172
        private TabItem tbtmSnapshot;
173
        private TabItem tbtmReplica;
174
        private TabItem tbtmDisks;
175

    
176
        private Font fontTitle ;
177
        private Font fontSubTitle ;
178
        private Font fontWidget;
179
        private List<Object> zpoolList;
180
        private Button btnConnectServer;
181
        private Button btnCreateZfsVolFS;
182
        private Thread thrConnect;
183
        private Thread thrCheck;
184
        private Thread thrCreateZFSVol;
185
        private Thread thrZpool;
186
        private Thread thrGetallZvol;
187
        private Thread thrZfsList;
188
        private guiProgress wPB;
189

    
190

    
191
        private String strItemServer ="";
192
        private String strItemZvolFS ="";
193
        private int countItem=0;
194
        private String infoUsedSize="";
195

    
196

    
197
        Menu treeZFSMenu;
198

    
199
        /**
200
         * Launch the application.
201
         * @param args
202
         */
203
        public static void main(String[] args) {
204
                try {
205
                        gui window = new gui();
206
                        window.open();
207

    
208
                } catch (Exception e) {
209
                        e.printStackTrace();
210
                }
211
        }
212

    
213
        /**
214
         * Open the window.
215
         */
216
        public void open() {
217
                log.setLevel((Level) Level.DEBUG);
218
                Display display = Display.getDefault();
219

    
220
                createContents(shell);
221

    
222
                shell.open();
223
                shell.layout();
224
                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
225
                shell.addListener(SWT.Close, new Listener() {
226
                        public void handleEvent(final Event event) {
227
                                zfs.disconnectAllServer();
228
                        }
229
                });
230
                while (!shell.isDisposed()) {
231
                        if (!display.readAndDispatch()) {
232

    
233
                                display.sleep();        
234
                        }
235
                }
236
        }
237

    
238
        /**
239
         * Create contents of the window.
240
         */
241
        protected void createContents(Composite parent) {
242
                shell = new Shell();
243
                shell.setSize(SWT.MAX, SWT.MAX);
244
                shell.setText("gZFS : a GUI for ZFS");
245
                //shell.layout();
246
                shell.setLayout(new FillLayout(SWT.HORIZONTAL));
247

    
248
                fontTitle = new Font(shell.getDisplay(), "Calibri", 14, SWT.BOLD);
249
                fontSubTitle = new Font(shell.getDisplay(), "Calibri", 10, SWT.BOLD);
250
                fontWidget = new Font(shell.getDisplay(), "Calibri", 10, SWT.NONE);
251
                tabFolderNav = new TabFolder(shell, SWT.UP);
252
                tabFolderNav.setBounds(0, 0, 200, 200);
253
                tabFolderNav.setBackground(tabFolderBackgroundColor);
254
                tabFolderNav.setForeground(tabFolderForegroundColor);
255

    
256
                /******************************************************************************
257
                 * CREATE TAB : GENERAL
258
                 ******************************************************************************/
259

    
260
                TabItem tbtmGen = new TabItem(tabFolderNav, SWT.NONE);
261
                //tbtmGen.setImage(SWTResourceManager.getImage(gui.class, "/images/accept-database-icon.png"));
262
                tbtmGen.setText("General");
263

    
264

    
265
                Composite compositeTabNavGen = new Composite(tabFolderNav, SWT.NONE);
266
                tbtmGen.setControl(compositeTabNavGen);
267
                GridLayout gridLayout = new GridLayout();
268
                compositeTabNavGen.setLayout(gridLayout);
269
                compositeTabNavGen.setBackground(tabFolderBackgroundColor);
270

    
271
                treeZpool = new Tree(compositeTabNavGen, SWT.BORDER|SWT.V_SCROLL);
272
                GridData gd_treeZpool = new GridData(GridData.FILL,GridData.FILL, true, true);
273
                gd_treeZpool.heightHint = 50;
274
                treeZpool.setLayoutData(gd_treeZpool);
275
                treeZpool.addListener(SWT.Selection, new Listener() {
276
                        public void handleEvent(final Event event) {
277
                                //log.debug(treeZpool.getSelection()[0].getText());
278
                                TreeItem root = (TreeItem) event.item;
279

    
280
                                if ( root.getParentItem() != null){
281
                                        zfs.getServer(root.getParentItem().getData().toString());
282
                                        zfs.zpoolGetAll(root.getData().toString());
283
                                        refreshInfoZpool();
284
                                        refreshDisks();
285

    
286
                                }else{
287
                                        zfs.getServer(root.getData().toString());
288
                                        refreshInfoServer();
289

    
290
                                }
291
                        }
292
                }
293
                                );
294
                //Init Server List in Tree
295
                refreshTreeZpoolList();
296

    
297
                Group groupServerConfig= new Group(compositeTabNavGen,SWT.NONE);
298
                groupServerConfig.setBackground(groupBackgroundColor);
299
                groupServerConfig.setLayout(new GridLayout());
300
                GridData gridDataServerConfig=new GridData(GridData.FILL_HORIZONTAL);
301
                gridDataServerConfig.heightHint=500;
302
                gridDataServerConfig.minimumHeight=500;
303
                groupServerConfig.setLayoutData(gridDataServerConfig);
304

    
305
                ScrolledComposite scrolledServerConfig=new ScrolledComposite(groupServerConfig,SWT.V_SCROLL);
306
                scrolledServerConfig.setLayoutData(new GridData(GridData.FILL_BOTH));
307
                Composite compositeWidget=new Composite(scrolledServerConfig,SWT.NONE);
308
                compositeWidget.setBackground(compositeBackgroundColor);
309
                GridLayout gridLayoutWidget = new GridLayout();
310
                gridLayoutWidget.numColumns =2;
311
                compositeWidget.setLayout(gridLayoutWidget);
312

    
313

    
314
                GridData gridDataTitleServerConfig = new GridData(GridData.FILL, GridData.CENTER, true, false);
315
                gridDataTitleServerConfig.horizontalSpan = 2;
316
                Label lblTitleServerConfig = new Label(compositeWidget, SWT.CENTER|SWT.BORDER);
317
                lblTitleServerConfig.setLayoutData(gridDataTitleServerConfig);
318
                lblTitleServerConfig.setFont(fontTitle);
319
                lblTitleServerConfig.setBackground(labelTitleBackgroundColor);
320
                lblTitleServerConfig.setText("Server Configuration");
321

    
322

    
323
                String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
324
                Arrays.sort(keysProp);
325
                labelsFieldServer.clear();
326
                textsFieldServer.clear();        
327
                combosFieldServer.clear();
328
                for (int i = 0; i < keysProp.length; i++) {
329
                        keyProp = keysProp[i];
330

    
331

    
332

    
333
                        if ( "freeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())){
334
                                Label lbl = new Label(compositeWidget, SWT.NONE);
335
                                lbl.setFont(fontWidget);
336
                                lbl.setBackground(labelFieldBackgroundColor);
337
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
338
                                lbl.setText(zfs.getZserver().zProperties.get(keyProp).getLabelProperty());
339
                                if (keyProp.equals("userPasswd")){
340
                                        textsFieldServer.add(new Text(compositeWidget,  SWT.PASSWORD | SWT.BORDER));
341
                                }else{
342
                                        textsFieldServer.add(new Text(compositeWidget, SWT.WRAP|SWT.BORDER));        
343

    
344
                                }
345

    
346
                                textsFieldServer.get(textsFieldServer.size()-1).setBackground(textFieldBackgroundColor);
347
                                textsFieldServer.get(textsFieldServer.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
348
                                //textsField.get(textsField.size()-1).setText(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
349
                                textsFieldServer.get(textsFieldServer.size()-1).setData(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
350

    
351
                        }else{
352

    
353
                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())){
354
                                        Label lbl = new Label(compositeWidget, SWT.NONE);
355
                                        lbl.setFont(fontWidget);
356
                                        lbl.setBackground(labelFieldBackgroundColor);
357
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
358
                                        lbl.setText(zfs.getZserver().zProperties.get(keyProp).getLabelProperty());
359

    
360
                                        combosFieldServer.add(new Combo(compositeWidget, SWT.NONE));
361
                                        combosFieldServer.get(combosFieldServer.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
362
                                        combosFieldServer.get(combosFieldServer.size()-1).setData(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
363
                                        //combosField.get(combosField.size()-1).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
364
                                        String[] keysPermitValue = (String[]) zfs.getZserver().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
365
                                        for (int cpt=0;cpt <zfs.getZserver().zProperties.get(keyProp).getPermitValue().size();cpt++){
366
                                                String keyPermiValue = keysPermitValue[cpt];
367
                                                combosFieldServer.get(combosFieldServer.size()-1).add(zfs.getZserver().zProperties.get(keyProp).getPermitValue().get(keyPermiValue).toString());
368
                                        }
369
                                }
370
                        }
371

    
372
                }
373

    
374
                Button btnAddServer = new Button(compositeWidget, SWT.NONE);
375
                btnAddServer.setText("Add ZFS Server");
376
                btnAddServer.addListener(SWT.Selection, new Listener() {
377
                        public void handleEvent(final Event event) {
378

    
379
                                String[] keysProp = zfs.getZserver().zProperties.keySet().toArray(new String[0]);
380
                                //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
381
                                Arrays.sort(keysProp);
382

    
383
                                for (int i = 0; i < keysProp.length; i++) {
384
                                        keyProp = keysProp[i];
385
                                        for (int cpt=0;cpt<textsFieldServer.size();cpt++){
386
                                                if (keyProp.equalsIgnoreCase(textsFieldServer.get(cpt).getData().toString())) {
387
                                                        log.debug(keyProp+" "+textsFieldServer.get(cpt).getText());
388
                                                        if (keyProp.equals("userPasswd")){
389
                                                                zfs.getZserver().zProperties.get(keyProp).setValue("");
390
                                                        }else{
391
                                                                zfs.getZserver().zProperties.get(keyProp).setValue(textsFieldServer.get(cpt).getText());        
392
                                                        }
393

    
394
                                                }
395
                                        }
396
                                }
397
                                zfs.addServer();
398

    
399
                                boolean checkExistInTree=false;
400
                                for (int ind=0;ind<treeZpool.getItemCount();ind++){
401
                                        log.debug("refreshTreeZpoolList "+treeZpool.getItem(ind).getData().toString()+" "+zfs.getZserver().zProperties.get("serverIP").getValue());
402
                                        if ( treeZpool.getItem(ind).getData().toString().equalsIgnoreCase(zfs.getZserver().zProperties.get("serverIP").getValue())){
403
                                                checkExistInTree=true;
404
                                        }
405
                                }
406
                                if ( ! checkExistInTree ){
407
                                        TreeItem rootTreeZvolFS = new TreeItem(treeZpool,SWT.None);
408
                                        rootTreeZvolFS.setText(zfs.getZserver().zProperties.get("serverIP").getValue());
409
                                        rootTreeZvolFS.setData(zfs.getZserver().zProperties.get("serverIP").getValue());
410
                                        rootTreeZvolFS.setImage(imageServerOffline);
411
                                }
412
                        }        
413
                });
414

    
415
                Button btnRemoveServer = new Button(compositeWidget, SWT.NONE);
416
                btnRemoveServer.setText("Remove ZFS Server");
417
                btnRemoveServer.addListener(SWT.Selection, new Listener() {
418
                        public void handleEvent(final Event event) {
419
                                if ( treeZpool.getParentItem() == null){
420
                                        if ( treeZpool.getSelectionCount() !=0){
421

    
422
                                                zfs.getZserver().zProperties.get("serverIP").setValue(treeZpool.getSelection()[0].getData().toString());
423
                                                for (int cptTree=0;cptTree<tree.getItemCount();cptTree++){
424
                                                        if (tree.getItem(cptTree).getData().equals(zfs.getZserver().zProperties.get("serverIP").getValue())){
425
                                                                tree.getItem(cptTree).removeAll();
426
                                                                tree.getItem(cptTree).dispose();
427
                                                        }
428
                                                }
429
                                                zfs.removeServer();                
430
                                                treeZpool.getSelection()[0].dispose();
431

    
432
                                        }
433
                                }
434

    
435
                        }
436
                });
437

    
438
                btnConnectServer = new Button(compositeWidget,SWT.NONE);
439
                GridData gridDataBtnServerConfig = new GridData(GridData.FILL, GridData.CENTER, true, false);
440
                gridDataBtnServerConfig.horizontalSpan = 2;
441
                btnConnectServer.setLayoutData(gridDataBtnServerConfig);
442
                btnConnectServer.setText("Connect");
443
                btnConnectServer.addListener(SWT.Selection, new Listener() {
444
                        public void handleEvent(final Event event) {
445

    
446

    
447

    
448
                                if (treeZpool.getSelectionCount() !=0 ){
449
                                        final TreeItem root = (TreeItem) treeZpool.getSelection()[0];
450
                                        if ( root.getParentItem() ==null ){
451

    
452
                                                String[] keysProp = zfs.getZserver().zProperties.keySet().toArray(new String[0]);
453
                                                //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
454
                                                Arrays.sort(keysProp);
455

    
456
                                                for (int i = 0; i < keysProp.length; i++) {
457
                                                        keyProp = keysProp[i];
458
                                                        for (int cpt=0;cpt<textsFieldServer.size();cpt++){
459
                                                                if (keyProp.equalsIgnoreCase(textsFieldServer.get(cpt).getData().toString())) {
460
                                                                        zfs.getZserver().zProperties.get(keyProp).setValue(textsFieldServer.get(cpt).getText());
461
                                                                }
462
                                                        }
463
                                                }
464
                                                if ( !zfs.getCacheSession().containsKey(zfs.getZserver().zProperties.get("serverIP").getValue()) && zfs.connectServer(zfs.getZserver().zProperties.get("serverIP").getValue(), 22, zfs.getZserver().zProperties.get("userLogin").getValue(), zfs.getZserver().zProperties.get("userPasswd").getValue())){
465

    
466
                                                        thrCheck = new Thread(new Runnable(){
467
                                                                public void run() {
468
                                                                        Display.getDefault().syncExec(new Runnable() {
469
                                                                                public void run() {
470
                                                                                        if (wPB.s.isDisposed()){
471
                                                                                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
472
                                                                                                wPB.open();
473
                                                                                        }else{
474
                                                                                                wPB.open();
475
                                                                                        }
476
                                                                                        btnConnectServer.setEnabled(false);
477
                                                                                        tabFolderNav.setEnabled(false);
478
                                                                                        refreshDisks();
479
                                                                                }
480
                                                                        });
481
                                                                        zfs.checkBinEnv();
482
                                                                        Display.getDefault().syncExec(new Runnable(){
483
                                                                                public void run(){
484
                                                                                        log.debug(zfs.getError());
485

    
486
                                                                                        log.debug(zfs.getZserver().zProperties.get("serverIP").getValue()+" connected");
487
                                                                                        if ( zfs.getError().size() ==0){
488
                                                                                                zsnap = zfs;
489

    
490
                                                                                                refreshTreeZpoolList();
491

    
492

    
493
                                                                                        }else{
494
                                                                                                String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
495
                                                                                                //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
496
                                                                                                Arrays.sort(keysPropError);
497
                                                                                                String textBox = "";
498
                                                                                                for (int i = 0; i < keysPropError.length; i++) {
499
                                                                                                        String keyPropError = keysPropError[i];
500
                                                                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
501
                                                                                                }
502

    
503
                                                                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
504
                                                                                                messageBoxInfo.setText("Warning");
505
                                                                                                messageBoxInfo.setMessage(textBox);
506
                                                                                                messageBoxInfo.open();
507
                                                                                                btnConnectServer.setEnabled(true);
508
                                                                                                tabFolderNav.setEnabled(true);
509
                                                                                                wPB.close();
510
                                                                                                zfs.disconnectServer();
511
                                                                                        }
512

    
513
                                                                                }
514
                                                                        });
515

    
516
                                                                }
517
                                                        });
518
                                                        thrCheck.start();
519
                                                        wPB.close();
520

    
521

    
522
                                                }        
523
                                        }
524

    
525
                                }
526

    
527
                        }
528
                });
529

    
530
                for (int i = 0; i < keysProp.length; i++) {
531
                        keyProp = keysProp[i];
532
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
533
                                Label lbl = new Label(compositeWidget, SWT.NONE);
534
                                lbl.setFont(fontWidget);
535
                                lbl.setBackground(labelFieldBackgroundColor);
536
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
537
                                lbl.setText(zfs.getZserver().zProperties.get(keyProp).getLabelProperty());
538

    
539
                                labelsFieldServer.add(new Label(compositeWidget, SWT.NONE));
540
                                labelsFieldServer.get(labelsFieldServer.size()-1).setBackground(labelFieldBackgroundColor);
541
                                labelsFieldServer.get(labelsFieldServer.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
542
                                //labelsField.get(labelsField.size()-1).setText(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
543
                                labelsFieldServer.get(labelsFieldServer.size()-1).setData(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
544
                        }
545
                }
546

    
547
                scrolledServerConfig.setContent(compositeWidget);
548
                scrolledServerConfig.setExpandVertical(true);
549
                scrolledServerConfig.setExpandHorizontal(true);
550
                scrolledServerConfig.setMinSize(compositeWidget.computeSize(SWT.DEFAULT,SWT.DEFAULT));
551

    
552
                TabItem tabItem = new TabItem(tabFolderNav, SWT.NONE);
553
                tabItem.setText("Volumes and File System");
554
                tabItem.setData("volandfs");
555

    
556
                compositeTabVolConfig = new Composite(tabFolderNav, SWT.NONE);
557
                tabItem.setControl(compositeTabVolConfig);
558
                compositeTabVolConfig.setLayout(new GridLayout());
559
                compositeTabVolConfig.setBackground(tabFolderBackgroundColor);
560
                tree = new Tree(compositeTabVolConfig, SWT.BORDER);
561
                //t.minimumHeight=100;
562
                GridData gd_tree = new GridData(GridData.FILL,GridData.FILL, true, true);
563
                gd_tree.heightHint = 500;
564
                tree.setLayoutData(gd_tree);
565

    
566

    
567
                tree.addListener(SWT.Selection, new Listener() {
568
                        public void handleEvent(final Event event) {
569

    
570
                                final TreeItem root = (TreeItem) event.item;
571
                                if ( root.getParentItem() != null){
572
                                        wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
573
                                        actionClickTree(event);
574
                                }
575
                        }
576
                });                
577

    
578

    
579
                tabFolderConfig = new TabFolder(shell, SWT.UP);
580
                tabFolderConfig.setBounds(200, 0, 200, 200);
581
                tabFolderConfig.setBackground(tabFolderBackgroundColor);
582
                tabFolderConfig.setForeground(tabFolderForegroundColor);
583
                createTabItemZpoolConfig();
584
                createTabItemCreateVol();
585
                createTabItemDisks();
586
                tabFolderNav.addListener(SWT.Selection, new Listener() {
587
                        public void handleEvent(final Event event) {
588
                                if (tabFolderNav.getSelection()[0].getText().equalsIgnoreCase("general")){
589
                                        thrZpool = new Thread(new Runnable(){
590
                                                public void run() {
591
                                                        Display.getDefault().syncExec(new Runnable() {
592
                                                                public void run() {
593
                                                                        if (wPB.s.isDisposed()){
594
                                                                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
595
                                                                                wPB.open();
596
                                                                        }else{
597
                                                                                wPB.open();
598
                                                                        }
599

    
600
                                                                }
601
                                                        });
602

    
603
                                                        Display.getDefault().syncExec(new Runnable() {
604
                                                                public void run() {
605
                                                                        if (!"".equals(zfs.getZpool().zProperties.get("name").getValue())){
606
                                                                                if (treeZpool.getSelection()[0].getParentItem() != null){
607
                                                                                        if (treeZpool.getSelectionCount()>0){
608
                                                                                                TreeItem zpoolSelect = treeZpool.getSelection()[0];
609
                                                                                                treeZpool.select(zpoolSelect);
610
                                                                                                zfs.getZserver().zProperties.get("serverIP").setValue(treeZpool.getSelection()[0].getParentItem().getData().toString());
611
                                                                                                zfs.zpoolGetAll(zfs.getZpool().zProperties.get("name").getValue());        
612
                                                                                        }        
613
                                                                                }
614

    
615
                                                                        }
616
                                                                        if ( !tbtmConfig.isDisposed()){
617
                                                                                tbtmConfig.dispose();
618
                                                                                tabFolderConfig.layout();
619
                                                                        }
620

    
621

    
622
                                                                        if ( !tbtmIscsi.isDisposed()){
623
                                                                                tbtmIscsi.dispose();
624
                                                                                tabFolderConfig.layout();
625
                                                                        }
626

    
627
                                                                        if ( !tbtmSnapshot.isDisposed()){
628
                                                                                tbtmSnapshot.dispose();
629
                                                                                tabFolderConfig.layout();
630
                                                                        }
631
                                                                        if ( !tbtmReplica.isDisposed()){
632
                                                                                tbtmReplica.dispose();
633
                                                                                tabFolderConfig.layout();
634
                                                                        }
635
                                                                        createTabItemZpoolConfig();
636
                                                                        refreshInfoZpool();
637
                                                                        compositeZpoolConfig.layout();
638
                                                                        zfs.setZvol();
639
                                                                        createTabItemCreateVol();
640
                                                                        compositeCreateVolFS.layout();
641

    
642
                                                                        createTabItemDisks();
643
                                                                        refreshDisks();
644
                                                                        compositeDisks.layout();
645

    
646
                                                                        wPB.close();
647
                                                                }
648
                                                        });
649
                                                }
650
                                        });
651
                                        thrZpool.start();        
652
                                }
653
                                if (tabFolderNav.getSelection()[0].getText().equalsIgnoreCase("Volumes and File System")){
654
                                        thrZfsList = new Thread(new Runnable(){
655
                                                public void run() {
656
                                                        Display.getDefault().syncExec(new Runnable() {
657
                                                                public void run() {
658
                                                                        if ( !tbtmZpoolConfig.isDisposed()){
659
                                                                                tbtmZpoolConfig.dispose();
660
                                                                                tabFolderConfig.layout();
661
                                                                        }
662
                                                                        if ( !tbtmCreateVolFS.isDisposed()){
663
                                                                                tbtmCreateVolFS.dispose();
664
                                                                                tabFolderConfig.layout();
665
                                                                        }
666
                                                                        if ( !tbtmDisks.isDisposed()){
667
                                                                                tbtmDisks.dispose();
668
                                                                                tabFolderConfig.layout();
669
                                                                        }
670
                                                                        //zfs.setZvol();
671
                                                                        if ( tree.getSelectionCount() >0){
672

    
673
                                                                                if (tree.getSelection()[0].getParentItem() != null){
674
                                                                                        TreeItem topRoot = tree.getSelection()[0];
675
                                                                                        while (topRoot.getParentItem() != null){
676
                                                                                                topRoot = topRoot.getParentItem();
677
                                                                                        }
678
                                                                                        TreeItem treeZfsListItem = tree.getSelection()[0];
679
                                                                                        tree.select(treeZfsListItem);
680
                                                                                        zfs.getZserver().zProperties.get("serverIP").setValue(topRoot.getText());
681
                                                                                        zfs.zfsGetAllVolume(tree.getSelection()[0].getData().toString());        
682
                                                                                }
683
                                                                        }
684
                                                                        createTabItemVolConfig();
685
                                                                        refreshConfigVolume();
686
                                                                        compositeConfig.layout();
687
                                                                        createTabItemIscsi();
688
                                                                        createTabItemSnapshot();
689
                                                                        createTabItemReplica();
690
                                                                }
691

    
692
                                                        });
693
                                                }
694
                                        });
695
                                        thrZfsList.start();
696
                                }
697
                        }
698
                });
699
                tabFolderConfig.addListener(SWT.Selection, new Listener() {
700
                        public void handleEvent(final Event event) {
701
                                if (tabFolderConfig.getSelection()[0].getText().equalsIgnoreCase("Snapshots")){
702
                                        //tabFolderConfig.getItems()[0].s
703
                                        treeSnapshots.clearAll(true);
704
                                        treeSnapshots.setItemCount(0);
705
                                        List<Object> zlistSnapshots = zfs.zfsListSnapshotsByVolFS(zfs.getZvol().zProperties.get("name").getValue());
706
                                        for (int i = 0; i < zlistSnapshots.size(); i++) {
707
                                                TreeItem root = new TreeItem(treeSnapshots, 0);
708
                                                root.setText(zlistSnapshots.get(i).toString());
709
                                                root.setData(zlistSnapshots.get(i).toString());
710
                                                new TreeItem(root, 0);
711
                                        }
712

    
713
                                }
714
                        }
715
                });
716
        }
717

    
718
        private void createTabItemSettings(){
719
                /******************************************************************************
720
                 * CREATE TAB : Settings
721
                 ******************************************************************************/
722

    
723
                tbtmSettings = new TabItem(tabFolderConfig,SWT.NONE,0);
724
                tbtmSettings.setText("Server Configuration");
725
                Composite compositeSettings = new Composite(tabFolderConfig,SWT.NONE);
726
                tbtmSettings.setControl(compositeSettings);
727
                GridLayout gridLayout = new GridLayout();
728
                compositeSettings.setLayout(gridLayout);
729

    
730
        }
731

    
732
        private void createTabItemZpoolConfig(){
733
                /******************************************************************************
734
                 * CREATE TAB : SZFS Pool Configuration
735
                 ******************************************************************************/
736

    
737
                tbtmZpoolConfig = new TabItem(tabFolderConfig,SWT.NONE,0);
738
                tbtmZpoolConfig.setText("Pool Configuration");
739
                compositeZpoolConfig = new Composite(tabFolderConfig,SWT.NONE);
740
                tbtmZpoolConfig.setControl(compositeZpoolConfig);
741
                GridLayout gridLayout = new GridLayout();
742
                gridLayout.numColumns=2;
743
                compositeZpoolConfig.setLayout(gridLayout);
744
                compositeZpoolConfig.setBackground(tabFolderBackgroundColor);
745

    
746
                Group groupZpoolConfig = new Group(compositeZpoolConfig,SWT.NONE);
747
                groupZpoolConfig.setBackground(groupBackgroundColor);
748
                groupZpoolConfig.setLayout(new GridLayout());
749
                //GridData gridDataZpoolConfig=new GridData(GridData.FILL_HORIZONTAL);
750
                GridData gridDataZpoolConfig=new GridData(SWT.FILL, SWT.FILL, true, true);
751
                //gridDataZpoolConfig.heightHint=550;
752
                //gridDataZpoolConfig.minimumHeight=550;
753
                gridDataZpoolConfig.horizontalSpan=2;
754
                groupZpoolConfig.setLayoutData(gridDataZpoolConfig);
755

    
756
                ScrolledComposite scrolledZpoolConfig=new ScrolledComposite(groupZpoolConfig,SWT.V_SCROLL);
757
                scrolledZpoolConfig.setLayoutData(new GridData(GridData.FILL_BOTH));
758
                Composite compositeWidget=new Composite(scrolledZpoolConfig,SWT.NONE);
759
                compositeWidget.setBackground(compositeBackgroundColor);
760
                GridLayout gridLayoutWidget = new GridLayout();
761
                gridLayoutWidget.numColumns =2;
762
                compositeWidget.setLayout(gridLayoutWidget);
763

    
764
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
765
                gridDataTitle.horizontalSpan = 2;
766
                Label lblTitleInfoZpool = new Label(compositeWidget, SWT.CENTER|SWT.BORDER);
767
                lblTitleInfoZpool.setLayoutData(gridDataTitle);
768
                lblTitleInfoZpool.setFont(fontTitle);
769
                lblTitleInfoZpool.setBackground(labelTitleBackgroundColor);
770
                lblTitleInfoZpool.setText("ZFS Pool Informations");
771

    
772

    
773
                String[] keysProp = (String[]) zfs.getZpool().zProperties.keySet().toArray(new String[0]);
774
                Arrays.sort(keysProp);
775
                labelsFieldPool.clear();
776
                textsFieldPool.clear();        
777
                combosFieldPool.clear();
778

    
779
                for (int i = 0; i < keysProp.length; i++) {
780
                        keyProp = keysProp[i];
781
                        Label lbl = new Label(compositeWidget, SWT.NONE);
782
                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
783
                        lbl.setText(zfs.getZpool().zProperties.get(keyProp).getLabelProperty());
784
                        lbl.setFont(fontWidget);
785
                        lbl.setBackground(labelFieldBackgroundColor);
786
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
787
                                labelsFieldPool.add(new Label(compositeWidget, SWT.NONE));
788
                                labelsFieldPool.get(labelsFieldPool.size()-1).setBackground(labelFieldBackgroundColor);
789
                                labelsFieldPool.get(labelsFieldPool.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
790
                                labelsFieldPool.get(labelsFieldPool.size()-1).setData(zfs.getZpool().zProperties.get(keyProp).getNameProperty());
791
                        }else{
792
                                if ( "freeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())){
793
                                        textsFieldPool.add(new Text(compositeWidget, SWT.WRAP|SWT.BORDER));
794
                                        textsFieldPool.get(textsFieldPool.size()-1).setBackground(textFieldBackgroundColor);
795
                                        textsFieldPool.get(textsFieldPool.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
796
                                        textsFieldPool.get(textsFieldPool.size()-1).setData(zfs.getZpool().zProperties.get(keyProp).getNameProperty());
797

    
798
                                }else{
799

    
800
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())){
801
                                                combosFieldPool.add(new Combo(compositeWidget, SWT.NONE));
802
                                                combosFieldPool.get(combosFieldPool.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
803
                                                combosFieldPool.get(combosFieldPool.size()-1).setData(zfs.getZpool().zProperties.get(keyProp).getNameProperty());
804
                                                String[] keysPermitValue = (String[])zfs.getZpool().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
805

    
806
                                                for (int cpt=0;cpt <zfs.getZpool().zProperties.get(keyProp).getPermitValue().size();cpt++){
807
                                                        String keyPermitValue = keysPermitValue[cpt];
808
                                                        combosFieldPool.get(combosFieldPool.size()-1).add(zfs.getZpool().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
809
                                                }
810
                                        }
811
                                }
812

    
813
                        }
814
                }
815

    
816

    
817
                scrolledZpoolConfig.setContent(compositeWidget);
818
                scrolledZpoolConfig.setExpandVertical(true);
819
                scrolledZpoolConfig.setExpandHorizontal(true);
820
                scrolledZpoolConfig.setMinSize(compositeWidget.computeSize(SWT.DEFAULT,SWT.DEFAULT));
821

    
822

    
823
        }
824

    
825
        private void createTabItemDisks(){
826
                /******************************************************************************
827
                 * CREATE TAB : DISKS ZFS
828
                 ******************************************************************************/
829

    
830
                tbtmDisks = new TabItem(tabFolderConfig,SWT.NONE,2);
831
                tbtmDisks.setText("Raid and Disks Configuration");
832
                compositeDisks = new Composite(tabFolderConfig,SWT.NONE);
833
                tbtmDisks.setControl(compositeDisks);
834
                GridLayout gridLayout = new GridLayout();
835
                gridLayout.numColumns=6;
836
                compositeDisks.setLayout(gridLayout);
837
                compositeDisks.setBackground(tabFolderBackgroundColor);
838

    
839

    
840

    
841

    
842

    
843

    
844
        }
845

    
846

    
847

    
848
        private void createTabItemVolConfig(){
849
                /******************************************************************************
850
                 * CREATE TAB : Config
851
                 ******************************************************************************/
852

    
853

    
854
                tbtmConfig = new TabItem(tabFolderConfig,SWT.NONE,0);
855
                tbtmConfig.setText("Configuration");
856
                compositeConfig = new Composite(tabFolderConfig, SWT.NONE);
857
                //compositeConfig.set
858
                GridData parentData = new GridData(SWT.FILL, SWT.FILL, true, true);
859
                compositeConfig.setLayoutData(parentData);
860
                tbtmConfig.setControl(compositeConfig);
861
                GridLayout gridLayout = new GridLayout();
862
                gridLayout.numColumns=2;
863
                compositeConfig.setLayout(gridLayout);
864
                compositeConfig.setBackground(tabFolderBackgroundColor);
865
                Group groupInfoVolFS=new Group(compositeConfig,SWT.NONE);
866
                groupInfoVolFS.setBackground(groupBackgroundColor);
867
                groupInfoVolFS.setLayout(new GridLayout());
868
                GridData gridData=new GridData(GridData.FILL_HORIZONTAL);
869
                gridData.heightHint=400;
870
                gridData.horizontalSpan=2;
871
                groupInfoVolFS.setLayoutData(gridData);
872

    
873
                ScrolledComposite scrolledCreateVol=new ScrolledComposite(groupInfoVolFS,SWT.V_SCROLL);
874
                scrolledCreateVol.setLayoutData(new GridData(GridData.FILL_BOTH));
875
                Composite compositeWidget=new Composite(scrolledCreateVol,SWT.NONE);
876
                compositeWidget.setBackground(compositeBackgroundColor);
877
                GridLayout gridLayoutWidget = new GridLayout();
878
                gridLayoutWidget.numColumns =2;
879
                compositeWidget.setLayout(gridLayoutWidget);
880

    
881
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
882
                gridDataTitle.horizontalSpan = 2;
883
                Label lblTitleVolConfig = new Label(compositeWidget, SWT.CENTER|SWT.BORDER);
884
                lblTitleVolConfig.setLayoutData(gridDataTitle);
885
                lblTitleVolConfig.setFont(fontTitle);
886
                lblTitleVolConfig.setBackground(labelTitleBackgroundColor);
887
                lblTitleVolConfig.setText("Volume Parameters Information");
888

    
889
                String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
890
                Arrays.sort(keysProp);
891
                labelsField.clear();
892
                textsField.clear();
893
                combosField.clear();
894
                for (int i = 0; i < keysProp.length; i++) {
895
                        keyProp = keysProp[i];
896
                        if ( ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
897
                                        ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
898
                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf())) ) ||
899
                                                        ("filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
900
                                                                        ("fs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
901
                                                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) ) )                
902
                                                                                        || ("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()))
903

    
904
                                        ){
905

    
906
                                Label lbl = new Label(compositeWidget, SWT.NONE);
907
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
908
                                lbl.setText(zfs.getZvol().zProperties.get(keyProp).getLabelProperty());
909
                                lbl.setFont(fontWidget);
910
                                lbl.setBackground(labelFieldBackgroundColor);
911
                                if ( "noupdateable".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
912
                                        labelsField.add(new Label(compositeWidget, SWT.NONE));
913
                                        labelsField.get(labelsField.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
914
                                        //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
915
                                        labelsField.get(labelsField.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
916
                                        labelsField.get(labelsField.size()-1).setBackground(labelFieldBackgroundColor);
917
                                }else{
918
                                        if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())){
919
                                                textsField.add(new Text(compositeWidget, SWT.WRAP|SWT.BORDER));
920
                                                textsField.get(textsField.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
921
                                                //textsField.get(textsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
922
                                                textsField.get(textsField.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
923
                                                textsField.get(textsField.size()-1).setBackground(textFieldBackgroundColor);
924
                                        }else{
925

    
926
                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())){
927
                                                        combosField.add(new Combo(compositeWidget, SWT.NONE));
928
                                                        combosField.get(combosField.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
929
                                                        combosField.get(combosField.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
930
                                                        //combosField.get(combosField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
931
                                                        String[] keysPermitValue = (String[])zfs.getZvol().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
932
                                                        for (int cpt=0;cpt <zfs.getZvol().zProperties.get(keyProp).getPermitValue().size();cpt++){
933
                                                                String keyPermitValue = keysPermitValue[cpt];
934
                                                                combosField.get(combosField.size()-1).add(zfs.getZvol().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
935
                                                        }
936
                                                }
937
                                        }
938
                                }
939
                        }
940
                }
941
                scrolledCreateVol.setContent(compositeWidget);
942
                scrolledCreateVol.setExpandVertical(true);
943
                scrolledCreateVol.setExpandHorizontal(true);
944
                scrolledCreateVol.setMinSize(compositeWidget.computeSize(SWT.DEFAULT,SWT.DEFAULT));
945

    
946
        }
947

    
948
        private void createTabItemCreateVol(){
949
                /******************************************************************************
950
                 * CREATE TAB : Create Volume
951
                 ******************************************************************************/
952
                tbtmCreateVolFS = new TabItem(tabFolderConfig, SWT.NONE);
953
                tbtmCreateVolFS.setText("Create Volume/FileSystem");
954
                compositeCreateVolFS = new Composite(tabFolderConfig, SWT.NONE);
955
                tbtmCreateVolFS.setControl(compositeCreateVolFS);
956
                GridLayout gridLayoutCreateVolFS = new GridLayout();
957
                gridLayoutCreateVolFS.numColumns =1;
958
                compositeCreateVolFS.setLayout(gridLayoutCreateVolFS);
959
                compositeCreateVolFS.setBackground(tabFolderBackgroundColor);
960

    
961

    
962

    
963
                refreshCreateZfsVolFS();
964

    
965

    
966

    
967

    
968
        }
969

    
970
        private void createTabItemIscsi(){
971
                /******************************************************************************
972
                 * CREATE TAB : Add ISCSI Config
973
                 ******************************************************************************/
974
                tbtmIscsi = new TabItem(tabFolderConfig, SWT.NONE);
975
                tbtmIscsi.setText("ISCSI Configuration");
976
                compositeIscsi = new Composite(tabFolderConfig, SWT.NONE);
977
                tbtmIscsi.setControl(compositeIscsi);
978
                GridLayout gridLayoutCreateIscsi = new GridLayout();
979
                //gridLayoutCreateIscsi.numColumns =2;
980
                compositeIscsi.setLayout(gridLayoutCreateIscsi);
981
                compositeIscsi.setBackground(tabFolderBackgroundColor);
982

    
983
                Group groupListSession= new Group(compositeIscsi,SWT.NONE);
984
                groupListSession.setBackground(groupBackgroundColor);
985
                groupListSession.setLayout(new GridLayout());
986
                GridData gridDataListSession=new GridData(GridData.FILL_HORIZONTAL);
987
                //gridDataServerConfig.heightHint=500;
988
                //gridDataServerConfig.minimumHeight=500;
989
                gridDataListSession.heightHint=120;
990
                groupListSession.setLayoutData(gridDataListSession);
991

    
992
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
993
                gridDataTitle.horizontalSpan = 2;
994
                Label lblTitleListSession = new Label(groupListSession, SWT.CENTER|SWT.BORDER);
995
                lblTitleListSession.setLayoutData(gridDataTitle);
996
                lblTitleListSession.setFont(fontTitle);
997
                lblTitleListSession.setBackground(labelTitleBackgroundColor);
998
                lblTitleListSession.setText("ISCSI Session List");
999

    
1000
                GridData gd_tableIscsiSession = new GridData(GridData.FILL,GridData.FILL, true, true);
1001
                gd_tableIscsiSession.heightHint = 100;
1002
                gd_tableIscsiSession.horizontalSpan = 2;
1003
                tableIscsiSession = new Table(groupListSession, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
1004
                tableIscsiSession.setHeaderVisible(true);
1005
                tableIscsiSession.setLinesVisible(true);
1006
                tableIscsiSession.setLayoutData(gd_tableIscsiSession);
1007
                String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
1008
                for (int i = 0; i < keysProp.length; i++) {
1009
                        keyProp = keysProp[i];
1010
                        if ( "multinoupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
1011
                                log.info("create tab iscsi");
1012
                                tablecolumnsFieldAddIscsi.add(new TableColumn(tableIscsiSession, SWT.NONE));
1013
                                tablecolumnsFieldAddIscsi.get(tablecolumnsFieldAddIscsi.size()-1).setWidth(150);
1014
                                tablecolumnsFieldAddIscsi.get(tablecolumnsFieldAddIscsi.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1015
                        }
1016
                }
1017

    
1018
                Group groupSessionParameters= new Group(compositeIscsi,SWT.NONE);
1019
                groupSessionParameters.setBackground(groupBackgroundColor);
1020
                GridLayout gridLayoutSessionParemeters = new GridLayout();
1021
                gridLayoutSessionParemeters.numColumns =2;
1022
                groupSessionParameters.setLayout(gridLayoutSessionParemeters);
1023

    
1024
                GridData gridDataSessionParameters=new GridData(GridData.FILL_HORIZONTAL);
1025
                //gridDataSessionParameters.heightHint=250;
1026
                groupSessionParameters.setLayoutData(gridDataSessionParameters);
1027

    
1028
                GridData gridDataTitleSessionParameters = new GridData(GridData.FILL, GridData.CENTER, true, false);
1029
                gridDataTitleSessionParameters.horizontalSpan = 2;
1030
                Label lblTitreSessionParameters = new Label(groupSessionParameters, SWT.CENTER|SWT.BORDER);
1031
                lblTitreSessionParameters.setLayoutData(gridDataTitleSessionParameters);
1032
                lblTitreSessionParameters.setFont(fontTitle);
1033
                lblTitreSessionParameters.setBackground(labelTitleBackgroundColor);
1034
                lblTitreSessionParameters.setText("ISCSI Session Parameters");
1035
                keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
1036
                Arrays.sort(keysProp);
1037
                labelsFieldAddIscsi.clear();
1038
                textsFieldAddIscsi.clear();
1039
                combosFieldAddIscsi.clear();
1040

    
1041
                for (int i = 0; i < keysProp.length; i++) {
1042
                        keyProp = keysProp[i];
1043
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1044
                                Label lbl = new Label(groupSessionParameters, SWT.NONE);
1045
                                lbl.setFont(fontWidget);
1046
                                lbl.setBackground(labelFieldBackgroundColor);
1047
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1048
                                lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
1049

    
1050
                                labelsFieldAddIscsi.add(new Label(groupSessionParameters, SWT.NONE));
1051
                                labelsFieldAddIscsi.get(labelsFieldAddIscsi.size()-1).setBackground(labelFieldBackgroundColor);
1052
                                labelsFieldAddIscsi.get(labelsFieldAddIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1053
                                labelsFieldAddIscsi.get(labelsFieldAddIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1054
                        }else{
1055
                                if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
1056
                                        Label lbl = new Label(groupSessionParameters, SWT.NONE);
1057
                                        lbl.setFont(fontWidget);
1058
                                        lbl.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
1059
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1060
                                        lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
1061

    
1062
                                        textsFieldAddIscsi.add(new Text(groupSessionParameters, SWT.WRAP|SWT.BORDER));
1063
                                        textsFieldAddIscsi.get(textsFieldAddIscsi.size()-1).setBackground(textFieldBackgroundColor);
1064
                                        textsFieldAddIscsi.get(textsFieldAddIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1065
                                        //textsField.get(textsField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1066
                                        textsFieldAddIscsi.get(textsFieldAddIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1067

    
1068
                                }else{
1069

    
1070
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
1071
                                                Label lbl = new Label(groupSessionParameters, SWT.NONE);
1072
                                                lbl.setFont(fontWidget);
1073
                                                lbl.setBackground(labelFieldBackgroundColor);
1074
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1075
                                                lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
1076

    
1077
                                                combosFieldAddIscsi.add(new Combo(groupSessionParameters, SWT.NONE));
1078
                                                combosFieldAddIscsi.get(combosFieldAddIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1079
                                                combosFieldAddIscsi.get(combosFieldAddIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1080
                                                //combosField.get(combosField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
1081
                                                String[] keysPermitValue = (String[]) zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
1082
                                                for (int cpt=0;cpt <zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().size();cpt++){
1083
                                                        String keyPermitValue = keysPermitValue[cpt];
1084
                                                        combosFieldAddIscsi.get(combosFieldAddIscsi.size()-1).add(zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
1085
                                                }
1086
                                        }
1087
                                }
1088

    
1089
                        }
1090
                }
1091
                Button btnCreateIscsi = new Button(groupSessionParameters, SWT.None);
1092
                btnCreateIscsi.setText("Enable Iscsi");
1093
                btnCreateIscsi.addListener(SWT.Selection, new Listener() {
1094

    
1095
                        public void handleEvent(final Event event) {
1096
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1097

    
1098
                                        String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
1099
                                        Arrays.sort(keysProp);
1100

    
1101
                                        for (int i = 0; i < keysProp.length; i++) {
1102
                                                keyProp = keysProp[i];
1103
                                                log.debug("btnCreateIscsi :"+keyProp);
1104
                                                if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1105
                                                        for (int indLabel=0;indLabel<labelsFieldAddIscsi.size();indLabel++){
1106
                                                                if ( labelsFieldAddIscsi.get(indLabel).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
1107
                                                                        zfs.getZiscsi().zProperties.get(keyProp).setValue(labelsFieldAddIscsi.get(indLabel).getText());
1108
                                                                }
1109
                                                        }
1110
                                                }else{
1111
                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1112
                                                                for (int indText=0;indText<textsFieldAddIscsi.size();indText++){
1113
                                                                        if ( textsFieldAddIscsi.get(indText).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
1114
                                                                                zfs.getZiscsi().zProperties.get(keyProp).setValue(textsFieldAddIscsi.get(indText).getText());
1115
                                                                        }
1116
                                                                }
1117

    
1118
                                                        }else{
1119

    
1120
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1121
                                                                        for (int indList=0;indList<combosFieldAddIscsi.size();indList++){
1122
                                                                                log.debug("first loop"+combosFieldAddIscsi.get(indList).getData()+" "+zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1123

    
1124
                                                                                if ( combosFieldAddIscsi.get(indList).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
1125
                                                                                        zfs.getZiscsi().zProperties.get(keyProp).setValue(combosFieldAddIscsi.get(indList).getText());
1126
                                                                                        log.debug(zfs.getZiscsi().zProperties.get(keyProp).getMultivalues());
1127
                                                                                }
1128
                                                                        }
1129
                                                                }
1130
                                                        }
1131
                                                }
1132
                                        }
1133
                                        if ("snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
1134
                                                zfs.getZiscsi().zProperties.get("iomode").setValue("ro");
1135
                                        }
1136
                                        zfs.zfsCreateIscsi();
1137

    
1138
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
1139
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1140
                                        Arrays.sort(keysPropError);
1141
                                        String textBox = "";
1142
                                        for (int i = 0; i < keysPropError.length; i++) {
1143
                                                String keyPropError = keysPropError[i];
1144
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
1145
                                        }
1146
                                        if (keysPropError.length>0){
1147
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1148
                                                messageBoxInfo.setText("Warning");
1149
                                                messageBoxInfo.setMessage(textBox);
1150
                                                messageBoxInfo.open();
1151
                                        }else{
1152
                                                refreshIscsiSession();
1153
                                                if ("volume".equals(zfs.getZvol().zProperties.get("type").getValue())){
1154
                                                        tree.getSelection()[0].setImage(imageStorageOnline);
1155
                                                }else{
1156
                                                        if ("snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
1157
                                                                tree.getSelection()[0].setImage(imageSnapshotOnline);
1158
                                                        }
1159
                                                }
1160

    
1161
                                        }
1162

    
1163
                                }        
1164
                        }
1165
                });
1166

    
1167
                Button btnDelIscsi = new Button(groupSessionParameters, SWT.None);
1168
                btnDelIscsi.setText("Disable Iscsi");
1169
                btnDelIscsi.addListener(SWT.Selection, new Listener() {
1170

    
1171

    
1172

    
1173
                        public void handleEvent(final Event event) {
1174

    
1175
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")&& !"filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
1176
                                        zfs.zfsDelIscsi();
1177
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
1178
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1179
                                        Arrays.sort(keysPropError);
1180
                                        String textBox = "";
1181
                                        for (int i = 0; i < keysPropError.length; i++) {
1182
                                                String keyPropError = keysPropError[i];
1183
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
1184
                                        }
1185
                                        if (keysPropError.length>0){
1186
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1187
                                                messageBoxInfo.setText("Warning");
1188
                                                messageBoxInfo.setMessage(textBox);
1189
                                                messageBoxInfo.open();
1190
                                        }else{
1191
                                                refreshIscsiSession();
1192
                                                if ("volume".equals(zfs.getZvol().zProperties.get("type").getValue())){
1193
                                                        tree.getSelection()[0].setImage(imageStorageOffline);
1194
                                                }else{
1195
                                                        if ("snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
1196
                                                                tree.getSelection()[0].setImage(imageSnapshotOffline);
1197
                                                        }
1198
                                                }
1199

    
1200
                                        }
1201

    
1202
                                }
1203
                        }
1204
                });
1205
        }
1206

    
1207
        /************************************************************************************************************************************
1208
         * 
1209
         * Create tabItem Snapshot Config
1210
         * 
1211
         ************************************************************************************************************************************/
1212

    
1213
        private void createTabItemSnapshot(){
1214
                tbtmSnapshot = new TabItem(tabFolderConfig, SWT.NONE);
1215
                tbtmSnapshot.setText("Snapshot Configuration");
1216
                compositeSnapshot = new Composite(tabFolderConfig, SWT.NONE);
1217
                tbtmSnapshot.setControl(compositeSnapshot);
1218
                GridLayout gridLayoutActiveSnapshot = new GridLayout();
1219
                //gridLayoutCreateIscsi.numColumns =2;
1220
                compositeSnapshot.setLayout(gridLayoutActiveSnapshot);
1221
                compositeSnapshot.setBackground(tabFolderBackgroundColor);
1222

    
1223

    
1224

    
1225
                Group groupActiveSnapshot=new Group(compositeSnapshot,SWT.NONE);
1226
                groupActiveSnapshot.setBackground(groupBackgroundColor);
1227
                GridLayout gridLayoutWidgetSnapshot = new GridLayout();
1228
                gridLayoutWidgetSnapshot.numColumns =2;
1229
                groupActiveSnapshot.setLayout(gridLayoutWidgetSnapshot);
1230
                GridData gridDataActiveSnapshot=new GridData(GridData.FILL_HORIZONTAL);
1231
                //gridDataActiveSnapshot.heightHint=500;
1232

    
1233
                groupActiveSnapshot.setLayoutData(gridDataActiveSnapshot);
1234

    
1235
                GridData gridDataTitleSnapshots = new GridData(GridData.FILL, GridData.CENTER, true, false);
1236
                gridDataTitleSnapshots.horizontalSpan = 2;
1237
                Label lblTitreConfigSnapshots = new Label(groupActiveSnapshot, SWT.CENTER|SWT.BORDER);
1238
                lblTitreConfigSnapshots.setLayoutData(gridDataTitleSnapshots);
1239
                lblTitreConfigSnapshots.setFont(fontTitle);
1240
                lblTitreConfigSnapshots.setText("Enable/Disable Snapshot");
1241
                lblTitreConfigSnapshots.setBackground(labelTitleBackgroundColor);
1242

    
1243
                String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
1244
                Arrays.sort(keysProp);
1245

    
1246
                labelsFieldSnapshotsValue.clear();
1247
                labelsFieldSnapshots.clear();
1248
                textsFieldSnapshots.clear();
1249
                listsFieldSnaphots.clear();
1250
                for (int i = 0; i < keysProp.length; i++) {
1251
                        keyProp = keysProp[i];                                
1252

    
1253
                        if ( "noupdateable".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1254
                                Label lbl = new Label(groupActiveSnapshot, SWT.NONE);
1255
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1256
                                lbl.setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getLabelProperty());
1257
                                lbl.setFont(fontWidget);
1258
                                lbl.setBackground(labelFieldBackgroundColor);
1259
                                labelsFieldSnapshots.add(new Label(groupActiveSnapshot, SWT.NONE));
1260
                                labelsFieldSnapshots.get(labelsFieldSnapshots.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1261
                                //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1262
                                labelsFieldSnapshots.get(labelsFieldSnapshots.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1263
                                labelsFieldSnapshots.get(labelsFieldSnapshots.size()-1).setBackground(labelFieldBackgroundColor);
1264
                        }else{
1265
                                if ( "freeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())){
1266
                                        Label lbl = new Label(groupActiveSnapshot, SWT.NONE);
1267
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1268
                                        lbl.setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getLabelProperty());
1269
                                        lbl.setFont(fontWidget);
1270
                                        lbl.setBackground(labelFieldBackgroundColor);
1271
                                        textsFieldSnapshots.add(new Text(groupActiveSnapshot,SWT.WRAP| SWT.BORDER));
1272
                                        textsFieldSnapshots.get(textsFieldSnapshots.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1273
                                        //textsField.get(textsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1274
                                        textsFieldSnapshots.get(textsFieldSnapshots.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1275
                                        textsFieldSnapshots.get(textsFieldSnapshots.size()-1).setBackground(textFieldBackgroundColor);
1276
                                }else{
1277

    
1278
                                        if ( "nofreeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())){
1279
                                                Label lbl = new Label(groupActiveSnapshot, SWT.NONE);
1280
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1281
                                                lbl.setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getLabelProperty());
1282
                                                lbl.setFont(fontWidget);
1283
                                                lbl.setBackground(labelFieldBackgroundColor);
1284
                                                labelsFieldSnapshotsValue.add(new Label(groupActiveSnapshot, SWT.BORDER));
1285
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1286
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1287
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setFont(fontWidget);
1288
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setBackground(labelFieldBackgroundColor);
1289
                                                listsFieldSnaphots.add(new org.eclipse.swt.widgets.List(groupActiveSnapshot, SWT.WRAP |SWT.BORDER|SWT.V_SCROLL|SWT.MULTI));
1290
                                                GridData grdData_listSnapshots = new GridData(GridData.FILL, GridData.CENTER, true, false);
1291
                                                grdData_listSnapshots.heightHint=96;
1292
                                                grdData_listSnapshots.horizontalSpan=2;
1293
                                                listsFieldSnaphots.get(listsFieldSnaphots.size()-1).setLayoutData(grdData_listSnapshots);
1294
                                                listsFieldSnaphots.get(listsFieldSnaphots.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1295

    
1296
                                                String [] valuePermiValue = zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().values().toArray(new String[0]);
1297
                                                Arrays.sort(valuePermiValue);
1298
                                                listsFieldSnaphots.get(listsFieldSnaphots.size()-1).setItems(valuePermiValue);
1299
                                        }
1300
                                }
1301
                        }
1302
                }
1303
                Button btnEnableSnapshots = new Button(groupActiveSnapshot, SWT.None);
1304
                btnEnableSnapshots.setText("Enable Snapshots");
1305
                btnEnableSnapshots.addListener(SWT.Selection, new Listener() {
1306
                        private List<Object> list4List;
1307

    
1308
                        public void handleEvent(final Event event) {
1309
                                zsnap = zfs;
1310

    
1311
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1312

    
1313
                                        String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
1314
                                        Arrays.sort(keysProp);
1315

    
1316
                                        for (int i = 0; i < keysProp.length; i++) {
1317
                                                keyProp = keysProp[i];
1318
                                                log.debug("btnEnableSnapshot :"+keyProp);
1319
                                                if ( "noupdateable".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1320
                                                        for (int indLabel=0;indLabel<labelsFieldSnapshots.size();indLabel++){
1321
                                                                if ( labelsFieldSnapshots.get(indLabel).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1322
                                                                        zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).setValue(labelsFieldSnapshots.get(indLabel).getText());
1323

    
1324
                                                                }
1325
                                                        }
1326
                                                }else{
1327
                                                        if ( "freeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1328
                                                                for (int indText=0;indText<textsFieldSnapshots.size();indText++){
1329
                                                                        if ( textsFieldSnapshots.get(indText).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1330
                                                                                zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).setValue(textsFieldSnapshots.get(indText).getText());
1331
                                                                        }
1332
                                                                }
1333

    
1334
                                                        }else{
1335

    
1336
                                                                if ( "nofreeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1337
                                                                        for (int indList=0;indList<listsFieldSnaphots.size();indList++){
1338
                                                                                log.debug("first loop"+listsFieldSnaphots.get(indList).getData()+" "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1339
                                                                                if ( listsFieldSnaphots.get(indList).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1340
                                                                                        list4List = new ArrayList<Object>();
1341
                                                                                        log.debug("second if "+listsFieldSnaphots.get(indList).getSelection().length);
1342
                                                                                        for ( int indSelect=0;indSelect<listsFieldSnaphots.get(indList).getSelection().length;indSelect++){
1343
                                                                                                String[] keysPropPermit = (String[]) zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
1344
                                                                                                log.debug("second loop keys "+keysPropPermit+" selection in use "+listsFieldSnaphots.get(indList).getSelection()[indSelect]);
1345
                                                                                                for ( int indPermit=0; indPermit<keysPropPermit.length;indPermit++){
1346
                                                                                                        String keyPropPermit = keysPropPermit[indPermit];
1347
                                                                                                        log.debug("Thirth if "+keyPropPermit+" "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit));
1348
                                                                                                        if ( zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit).equals(listsFieldSnaphots.get(indList).getSelection()[indSelect]) ){
1349
                                                                                                                list4List.add(keyPropPermit);
1350

    
1351
                                                                                                        }
1352
                                                                                                }
1353
                                                                                        }
1354

    
1355
                                                                                        zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).setMultivalues(list4List);
1356
                                                                                        log.debug( " "+list4List+ zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getMultivalues());
1357
                                                                                }
1358
                                                                        }
1359
                                                                }
1360
                                                        }
1361
                                                }
1362
                                        }
1363
                                        zsnap.zfsEnableSnapshots();
1364
                                        String[] keysPropError = zsnap.getError().keySet().toArray(new String[0]);
1365
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1366
                                        Arrays.sort(keysPropError);
1367
                                        String textBox = "";
1368
                                        for (int i = 0; i < keysPropError.length; i++) {
1369
                                                String keyPropError = keysPropError[i];
1370
                                                textBox = textBox +zsnap.getError().get(keyPropError)+".\n";
1371
                                        }
1372
                                        if (keysPropError.length>0){
1373
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1374
                                                messageBoxInfo.setText("Warning");
1375
                                                messageBoxInfo.setMessage(textBox);
1376
                                                messageBoxInfo.open();
1377
                                        }else{
1378
                                                for (int indList=0;indList<listsFieldSnaphots.size();indList++){
1379
                                                        listsFieldSnaphots.get(indList).deselectAll();
1380
                                                }
1381
                                        }
1382

    
1383
                                        refreshConfigSnapshot();
1384
                                }
1385
                        }
1386
                });
1387
                Button btnDisableSnapshots = new Button(groupActiveSnapshot, SWT.None);
1388
                btnDisableSnapshots.setText("Disable Snapshots");
1389
                btnDisableSnapshots.addListener(SWT.Selection, new Listener() {
1390

    
1391
                        public void handleEvent(final Event event) {
1392
                                //zsnap = zfs;
1393
                                boolean checkValue=true;
1394
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1395

    
1396
                                        String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
1397
                                        Arrays.sort(keysProp);
1398

    
1399
                                        for (int i = 0; i < keysProp.length; i++) {
1400
                                                keyProp = keysProp[i];
1401
                                                log.debug("btnEnableSnapshot :"+keyProp);
1402
                                                if ( zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue().equalsIgnoreCase("")){
1403
                                                        checkValue=false;
1404
                                                }
1405
                                        }
1406
                                        if (checkValue == true){
1407
                                                zsnap.zfsDisableSnapshots();
1408
                                                refreshConfigSnapshot();
1409

    
1410
                                        }
1411
                                }
1412

    
1413
                        }
1414
                });
1415

    
1416
        }
1417

    
1418
        /************************************************************************************************************************************
1419
         * 
1420
         * Create tabItem Replication Config
1421
         * 
1422
         ************************************************************************************************************************************/
1423

    
1424
        private void createTabItemReplica(){
1425
                tbtmReplica = new TabItem(tabFolderConfig, SWT.NONE);
1426
                tbtmReplica.setText("Replication Configuration");
1427
                compositeReplica = new Composite(tabFolderConfig, SWT.NONE);
1428
                tbtmReplica.setControl(compositeReplica);
1429
                GridLayout gridLayoutActiveReplica = new GridLayout();
1430
                //gridLayoutCreateIscsi.numColumns =2;
1431
                compositeReplica.setLayout(gridLayoutActiveReplica);
1432
                compositeReplica.setBackground(tabFolderBackgroundColor);
1433

    
1434
                Group groupActiveReplica=new Group(compositeReplica,SWT.NONE);
1435
                groupActiveReplica.setBackground(groupBackgroundColor);
1436
                groupActiveReplica.setLayout(new GridLayout());
1437
                GridData gridDataActiveReplica=new GridData(SWT.FILL, SWT.FILL, true, true);
1438
                //gridDataActiveSnapshot.heightHint=500;
1439
                groupActiveReplica.setLayoutData(gridDataActiveReplica);
1440

    
1441
                ScrolledComposite scrolledReplicaConfig=new ScrolledComposite(groupActiveReplica,SWT.V_SCROLL);
1442
                scrolledReplicaConfig.setLayoutData(new GridData(GridData.FILL_BOTH));
1443
                Composite compositeWidgetReplica=new Composite(scrolledReplicaConfig,SWT.NONE);
1444
                compositeWidgetReplica.setBackground(compositeBackgroundColor);
1445
                GridLayout gridLayoutWidget = new GridLayout();
1446
                gridLayoutWidget.numColumns =2;
1447
                compositeWidgetReplica.setLayout(gridLayoutWidget);
1448

    
1449
                GridData gridDataTitleReplica = new GridData(GridData.FILL, GridData.CENTER, true, false);
1450
                gridDataTitleReplica.horizontalSpan = 2;
1451
                Label lblTitreConfigReplica = new Label(compositeWidgetReplica, SWT.CENTER|SWT.BORDER);
1452
                lblTitreConfigReplica.setLayoutData(gridDataTitleReplica);
1453
                lblTitreConfigReplica.setFont(fontTitle);
1454
                lblTitreConfigReplica.setText("Enable/Disable Replication");
1455
                lblTitreConfigReplica.setBackground(labelTitleBackgroundColor);
1456

    
1457
                String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
1458
                Arrays.sort(keysProp);
1459

    
1460
                labelsFieldReplicaValue.clear();
1461
                labelsFieldReplica.clear();
1462
                textsFieldReplica.clear();
1463
                listsFieldReplica.clear();
1464
                for (int i = 0; i < keysProp.length; i++) {
1465
                        keyProp = keysProp[i];                        
1466

    
1467
                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType()) && (zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() !=null)){
1468
                                Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1469
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1470
                                lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1471
                                lbl.setFont(fontWidget);
1472
                                lbl.setBackground(labelFieldBackgroundColor);
1473
                                labelsFieldReplicaValue.add(new Label(compositeWidgetReplica, SWT.BORDER));
1474
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1475
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1476
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setFont(fontWidget);
1477
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setBackground(labelFieldBackgroundColor);
1478
                                listsFieldReplica.add(new org.eclipse.swt.widgets.List(compositeWidgetReplica, SWT.WRAP |SWT.BORDER|SWT.V_SCROLL|SWT.MULTI));
1479
                                GridData grdData_listReplicas = new GridData(GridData.FILL, GridData.CENTER, true, false);
1480
                                grdData_listReplicas.heightHint=96;
1481
                                grdData_listReplicas.horizontalSpan=2;
1482
                                listsFieldReplica.get(listsFieldReplica.size()-1).setLayoutData(grdData_listReplicas);
1483
                                listsFieldReplica.get(listsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1484
                                String [] valuePermiValue = zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().values().toArray(new String[0]);
1485
                                Arrays.sort(valuePermiValue);
1486
                                listsFieldReplica.get(listsFieldReplica.size()-1).setItems(valuePermiValue);
1487

    
1488
                        }
1489
                }
1490
                for (int i = 0; i < keysProp.length; i++) {
1491
                        keyProp = keysProp[i];                
1492
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
1493
                                Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1494
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1495
                                lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1496
                                lbl.setFont(fontWidget);
1497
                                lbl.setBackground(labelFieldBackgroundColor);
1498
                                labelsFieldReplica.add(new Label(compositeWidgetReplica, SWT.NONE));
1499
                                labelsFieldReplica.get(labelsFieldReplica.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1500
                                //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1501
                                labelsFieldReplica.get(labelsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1502
                                labelsFieldReplica.get(labelsFieldReplica.size()-1).setBackground(labelFieldBackgroundColor);
1503
                        }else{
1504
                                if ( "freeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())){
1505
                                        Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1506
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1507
                                        lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1508
                                        lbl.setFont(fontWidget);
1509
                                        lbl.setBackground(labelFieldBackgroundColor);
1510
                                        textsFieldReplica.add(new Text(compositeWidgetReplica,SWT.WRAP| SWT.BORDER));
1511
                                        textsFieldReplica.get(textsFieldReplica.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1512
                                        //textsField.get(textsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1513
                                        textsFieldReplica.get(textsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1514
                                        textsFieldReplica.get(textsFieldReplica.size()-1).setBackground(textFieldBackgroundColor);
1515
                                }else{
1516

    
1517

    
1518
                                        if ("nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType()) && zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() ==null){
1519

    
1520

    
1521
                                                Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1522
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1523
                                                lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1524
                                                lbl.setFont(fontWidget);
1525
                                                lbl.setBackground(labelFieldBackgroundColor);
1526

    
1527
                                                combosFieldReplica.add((new Combo(compositeWidgetReplica, SWT.READ_ONLY)));
1528
                                                GridData grdData_listReplicas = new GridData(GridData.FILL, GridData.CENTER, true, false);
1529
                                                combosFieldReplica.get(combosFieldReplica.size()-1).setLayoutData(grdData_listReplicas);
1530
                                                combosFieldReplica.get(combosFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1531

    
1532
                                                log.debug("createTabItemReplica "+keyProp);
1533
                                                if (keyProp.equalsIgnoreCase("server")){
1534
                                                        lbl = new Label(compositeWidgetReplica, SWT.NONE);
1535
                                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1536
                                                        lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1537
                                                        lbl.setFont(fontWidget);
1538
                                                        lbl.setBackground(labelFieldBackgroundColor);
1539

    
1540
                                                        labelsFieldReplica.add(new Label(compositeWidgetReplica, SWT.NONE));
1541
                                                        labelsFieldReplica.get(labelsFieldReplica.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1542
                                                        //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1543
                                                        labelsFieldReplica.get(labelsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1544
                                                        labelsFieldReplica.get(labelsFieldReplica.size()-1).setBackground(labelFieldBackgroundColor);
1545
                                                        combosFieldReplica.get(combosFieldReplica.size()-1).addListener(SWT.Selection, new Listener() {
1546

    
1547
                                                                public void handleEvent(final Event event) {
1548
                                                                        final Combo comboSrv = (Combo) event.widget;
1549
                                                                        zfs.getServer(comboSrv.getText());
1550
                                                                        List zpoolList = zfs.zpoolList();
1551
                                                                        String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
1552
                                                                        Arrays.sort(keysProp);
1553

    
1554
                                                                        for (int i = 0; i < keysProp.length; i++) {
1555
                                                                                keyProp = keysProp[i];
1556
                                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())&& zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() ==null) {
1557
                                                                                        if (keyProp.equalsIgnoreCase("replicapool")){
1558

    
1559
                                                                                                for (int indCombo=0;indCombo<combosFieldReplica.size();indCombo++){
1560
                                                                                                        if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1561
                                                                                                                combosFieldReplica.get(indCombo).removeAll();
1562
                                                                                                                String[] keysPropSrv = (String[]) zfs.getCacheSession().keySet().toArray(new String[0]);
1563
                                                                                                                Arrays.sort(keysPropSrv);
1564
                                                                                                                for (int cptPool=0;cptPool<zpoolList.size();cptPool++){
1565
                                                                                                                        combosFieldReplica.get(indCombo).add(zpoolList.get(cptPool).toString());
1566
                                                                                                                        log.debug("REFRESHConfig3 : "+zpoolList.get(cptPool).toString());
1567
                                                                                                                }
1568
                                                                                                        }
1569
                                                                                                }
1570

    
1571
                                                                                        }
1572
                                                                                }
1573
                                                                        }
1574

    
1575
                                                                }
1576
                                                        });
1577
                                                }
1578

    
1579
                                        }
1580
                                }
1581
                        }
1582
                }
1583
                Button btnEnableReplicas = new Button(compositeWidgetReplica, SWT.None);
1584
                btnEnableReplicas.setText("Enable Replication");
1585
                btnEnableReplicas.addListener(SWT.Selection, new Listener() {
1586
                        private List<Object> list4List;
1587

    
1588
                        public void handleEvent(final Event event) {
1589

    
1590

    
1591
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1592

    
1593
                                        String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
1594
                                        Arrays.sort(keysProp);
1595

    
1596
                                        for (int i = 0; i < keysProp.length; i++) {
1597
                                                keyProp = keysProp[i];
1598
                                                log.debug("btnEnableReplication :"+keyProp);
1599
                                                if ( "noupdateable".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
1600
                                                        for (int indLabel=0;indLabel<labelsFieldReplica.size();indLabel++){
1601
                                                                if ( labelsFieldReplica.get(indLabel).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1602
                                                                        zfs.getZreplicas().zSchedulerProperties.get(keyProp).setValue(labelsFieldReplica.get(indLabel).getText());
1603

    
1604
                                                                }
1605
                                                        }
1606
                                                }else{
1607
                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
1608
                                                                for (int indText=0;indText<textsFieldReplica.size();indText++){
1609
                                                                        if ( textsFieldReplica.get(indText).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1610
                                                                                zfs.getZreplicas().zSchedulerProperties.get(keyProp).setValue(textsFieldReplica.get(indText).getText());
1611
                                                                        }
1612
                                                                }
1613

    
1614
                                                        }else{
1615

    
1616
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType()) && (zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() !=null)){
1617
                                                                        for (int indList=0;indList<listsFieldReplica.size();indList++){
1618
                                                                                log.debug("first loop"+listsFieldReplica.get(indList).getData()+" "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1619
                                                                                if ( listsFieldReplica.get(indList).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1620
                                                                                        list4List = new ArrayList<Object>();
1621
                                                                                        log.debug("second if "+listsFieldReplica.get(indList).getSelection().length);
1622
                                                                                        for ( int indSelect=0;indSelect<listsFieldReplica.get(indList).getSelection().length;indSelect++){
1623
                                                                                                String[] keysPropPermit = (String[]) zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
1624
                                                                                                log.debug("second loop keys "+keysPropPermit+" selection in use "+listsFieldReplica.get(indList).getSelection()[indSelect]);
1625
                                                                                                for ( int indPermit=0; indPermit<keysPropPermit.length;indPermit++){
1626
                                                                                                        String keyPropPermit = keysPropPermit[indPermit];
1627
                                                                                                        log.debug("Thirth if "+keyPropPermit+" "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit));
1628
                                                                                                        if ( zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit).equals(listsFieldReplica.get(indList).getSelection()[indSelect]) ){
1629
                                                                                                                list4List.add(keyPropPermit);
1630

    
1631
                                                                                                        }
1632
                                                                                                }
1633
                                                                                        }
1634

    
1635
                                                                                        zfs.getZreplicas().zSchedulerProperties.get(keyProp).setMultivalues(list4List);
1636
                                                                                        log.debug( " "+list4List+ zfs.getZreplicas().zSchedulerProperties.get(keyProp).getMultivalues());
1637
                                                                                }
1638
                                                                        }
1639
                                                                }
1640
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType()) && (zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() ==null)){
1641
                                                                        for (int indCombo=0;indCombo<combosFieldReplica.size();indCombo++){
1642
                                                                                if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1643
                                                                                        zfs.getZreplicas().zSchedulerProperties.get(keyProp).setValue(combosFieldReplica.get(indCombo).getText());
1644
                                                                                }
1645
                                                                        }
1646
                                                                }
1647
                                                        }
1648
                                                }
1649
                                        }
1650
                                        zfs.getZreplicas().zSchedulerProperties.get("name").setValue(zfs.getZvol().zProperties.get("name").getValue());
1651
                                        if ( tree.getSelectionCount() >0){
1652

    
1653
                                                if (tree.getSelection()[0].getParentItem() != null){
1654
                                                        TreeItem topRoot = tree.getSelection()[0];
1655
                                                        while (topRoot.getParentItem() != null){
1656
                                                                topRoot = topRoot.getParentItem();
1657
                                                        }
1658
                                                        TreeItem treeZfsListItem = tree.getSelection()[0];
1659
                                                        tree.select(treeZfsListItem);
1660
                                                        zfs.getZserver().zProperties.get("serverIP").setValue(topRoot.getText());
1661
                                                }
1662
                                        }
1663
                                        zfs.zfsEnableReplicas();
1664
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
1665
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1666
                                        Arrays.sort(keysPropError);
1667
                                        String textBox = "";
1668
                                        for (int i = 0; i < keysPropError.length; i++) {
1669
                                                String keyPropError = keysPropError[i];
1670
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
1671
                                        }
1672
                                        if (keysPropError.length>0){
1673
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1674
                                                messageBoxInfo.setText("Warning");
1675
                                                messageBoxInfo.setMessage(textBox);
1676
                                                messageBoxInfo.open();
1677
                                        }else{
1678
                                                for (int indList=0;indList<listsFieldReplica.size();indList++){
1679
                                                        listsFieldReplica.get(indList).deselectAll();
1680
                                                }
1681
                                        }
1682

    
1683
                                        refreshConfigReplica();
1684
                                }
1685
                        }
1686
                });
1687
                Button btnDisableReplicas = new Button(compositeWidgetReplica, SWT.None);
1688
                btnDisableReplicas.setText("Disable Replication");
1689
                btnDisableReplicas.addListener(SWT.Selection, new Listener() {
1690

    
1691
                        public void handleEvent(final Event event) {
1692
                                //zsnap = zfs;
1693
                                boolean checkValue=true;
1694
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1695
                                        zfs.getZreplicas().zSchedulerProperties.get("name").setValue(zfs.getZvol().zProperties.get("name").getValue());
1696
                                        zfs.zfsDisableReplicas();
1697
                                        refreshConfigReplica();
1698

    
1699
                                }
1700

    
1701
                        }
1702
                });
1703

    
1704
                scrolledReplicaConfig.setContent(compositeWidgetReplica);
1705
                scrolledReplicaConfig.setExpandVertical(true);
1706
                scrolledReplicaConfig.setExpandHorizontal(true);
1707
                scrolledReplicaConfig.setMinSize(compositeWidgetReplica.computeSize(SWT.DEFAULT,SWT.DEFAULT));
1708
        }
1709

    
1710

    
1711

    
1712

    
1713
        public void refreshTreeZFSList(final TreeItem rootTree){
1714

    
1715
                thrConnect = new Thread(new Runnable() {
1716
                        public void run() {
1717
                                log.debug("start update ZFS volumes list ....");
1718
                                zfsList = zfs.zfsList();
1719

    
1720
                                log.debug(zfsList.size());
1721
                                for (int i = 0; i < zfsList.size(); i++) {
1722
                                        final int ind=i;
1723
                                        log.debug("refreshTreeZFSList "+zfsList.get(i));
1724
                                        zfs.zfsGetAllVolume(zfsList.get(i).toString());
1725

    
1726
                                        //zfs.zfsGetInfoByProperty(zfsList.get(i).toString(), "type");
1727
                                        if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
1728
                                                infoUsedSize=zfs.getZvol().zProperties.get("usedbydataset").getValue()+"/"+zfs.getZvol().zProperties.get("available").getValue();
1729
                                        }else{
1730
                                                infoUsedSize=zfs.getZvol().zProperties.get("used").getValue()+" / "+zfs.getZvol().zProperties.get("volsize").getValue();
1731
                                        }
1732
                                        if ( ("volume".equals(zfs.getZvol().zProperties.get("type").getValue()) && zfs.getIscsiListConfigVol(zfsList.get(i).toString()) && ! "".equalsIgnoreCase(zfs.getZiscsi().zProperties.get("tid").getValue()))
1733
                                                        || ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue()) && "yes".equals(zfs.getZvol().zProperties.get("mounted").getValue()))        ){
1734
                                                Display.getDefault().syncExec(new Runnable() {
1735
                                                        public void run() {
1736
                                                                updateItemTreeZfsList(true, zfsList.get(ind).toString(),  rootTree,infoUsedSize,-1);
1737
                                                        }
1738
                                                });        
1739
                                        }else{
1740
                                                Display.getDefault().syncExec(new Runnable() {
1741
                                                        public void run() {
1742
                                                                updateItemTreeZfsList(false, zfsList.get(ind).toString(),  rootTree,infoUsedSize,-1);
1743
                                                        }
1744
                                                });
1745
                                        }
1746
                                }
1747
                                Display.getDefault().syncExec(new Runnable() {
1748
                                        public void run() {
1749
                                                btnConnectServer.setEnabled(true);
1750
                                                tabFolderNav.setEnabled(true);
1751
                                                wPB.close();
1752
                                        }
1753
                                });
1754
                        }        
1755

    
1756
                });
1757
                thrConnect.start();
1758
                log.debug("refreshZFSList");
1759
        }
1760

    
1761
        public void refreshTreeZpoolList(){
1762

    
1763
                if (zfs.getCacheSession().containsKey(zfs.getZserver().zProperties.get("serverIP").getValue()) ){
1764
                        final TreeItem root = treeZpool.getSelection()[0];
1765
                        root.setImage(imageServerOnline);
1766
                        log.debug("refreshTreeZpoolList "+" "+keyProp);
1767

    
1768
                        zpoolList = zfs.zpoolList();
1769
                        for (int indPool = 0; indPool < zpoolList.size(); indPool++) {
1770
                                TreeItem item = new TreeItem(root, 0);
1771
                                item.setText(zpoolList.get(indPool).toString());
1772
                                item.setImage(imageStorage);
1773
                                item.setData(zpoolList.get(indPool).toString());
1774
                                //new TreeItem(root, 0);
1775
                        }
1776
                        boolean checkExistInTree = false;
1777

    
1778
                        for (int ind=0;ind<tree.getItemCount();ind++){
1779
                                log.debug("refreshTreeZpoolList "+tree.getItem(ind).getData().toString()+" "+zfs.getZserver().zProperties.get("serverIP").getValue());
1780
                                if ( tree.getItem(ind).getData().toString().equalsIgnoreCase(zfs.getZserver().zProperties.get("serverIP").getValue())){
1781
                                        checkExistInTree=true;
1782
                                }
1783
                        }
1784
                        if ( ! checkExistInTree ){
1785
                                TreeItem rootTreeZvolFS = new TreeItem(tree,SWT.None);
1786
                                rootTreeZvolFS.setText(zfs.getZserver().zProperties.get("serverIP").getValue());
1787
                                rootTreeZvolFS.setData(zfs.getZserver().zProperties.get("serverIP").getValue());
1788
                                rootTreeZvolFS.setImage(imageStorageServer);
1789
                                refreshTreeZFSList(rootTreeZvolFS);        
1790
                        }else{
1791
                                btnConnectServer.setEnabled(true);
1792
                                tabFolderNav.setEnabled(true);
1793
                                wPB.close();
1794
                        }
1795
                }else{
1796
                        treeZpool.clearAll(true);
1797
                        treeZpool.setItemCount(0);
1798
                        List<Object> listGetServer = zfs.getListServer();
1799

    
1800
                        for (int i=0;i<listGetServer.size();i++){
1801
                                zfs.getServer(listGetServer.get(i).toString());
1802
                                final TreeItem root = new TreeItem(treeZpool,SWT.None);
1803
                                root.setText(zfs.getZserver().zProperties.get("serverIP").getValue());
1804
                                root.setData(zfs.getZserver().zProperties.get("serverIP").getValue());
1805
                                root.setImage(imageServerOffline);
1806

    
1807
                        }
1808

    
1809
                }
1810

    
1811
        }
1812

    
1813

    
1814
        private void refreshInfoServer(){
1815
                String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1816
                Arrays.sort(keysProp);
1817

    
1818
                for (int i = 0; i < keysProp.length; i++) {
1819
                        keyProp = keysProp[i];
1820
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
1821
                                for (int indLabel=0;indLabel<labelsFieldServer.size();indLabel++){
1822
                                        if ( labelsFieldServer.get(indLabel).getData().equals(zfs.getZserver().zProperties.get(keyProp).getNameProperty()) ){
1823
                                                labelsFieldServer.get(indLabel).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1824
                                        }
1825
                                }
1826
                        }else{
1827
                                if ( "freeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
1828
                                        for (int indText=0;indText<textsFieldServer.size();indText++){
1829
                                                if ( textsFieldServer.get(indText).getData().equals(zfs.getZserver().zProperties.get(keyProp).getNameProperty()) ){
1830
                                                        textsFieldServer.get(indText).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1831
                                                }
1832
                                        }
1833
                                }else{
1834
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
1835
                                                for (int indCombo=0;indCombo<combosFieldServer.size();indCombo++){
1836
                                                        if ( combosFieldServer.get(indCombo).getData().equals(zfs.getZserver().zProperties.get(keyProp).getNameProperty()) ){
1837
                                                                combosFieldServer.get(indCombo).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1838
                                                        }
1839
                                                }
1840
                                        }
1841
                                }
1842
                        }
1843
                }
1844
        }
1845

    
1846
        private void refreshInfoZpool(){
1847

    
1848
                String[] keysProp = (String[]) zfs.getZpool().zProperties.keySet().toArray(new String[0]);
1849
                Arrays.sort(keysProp);
1850
                log.debug(keysProp);
1851
                for (int i = 0; i < keysProp.length; i++) {
1852
                        keyProp = keysProp[i];
1853
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
1854
                                for (int indLabel=0;indLabel<labelsFieldPool.size();indLabel++){
1855
                                        if ( labelsFieldPool.get(indLabel).getData().equals(zfs.getZpool().zProperties.get(keyProp).getNameProperty()) ){
1856
                                                labelsFieldPool.get(indLabel).setText(zfs.getZpool().zProperties.get(keyProp).getValue());
1857
                                        }
1858
                                }
1859
                        }else{
1860
                                if ( "freeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
1861
                                        for (int indText=0;indText<textsFieldPool.size();indText++){
1862
                                                if ( textsFieldPool.get(indText).getData().equals(zfs.getZpool().zProperties.get(keyProp).getNameProperty()) ){
1863
                                                        textsFieldPool.get(indText).setText(zfs.getZpool().zProperties.get(keyProp).getValue());
1864
                                                }
1865
                                        }
1866
                                }else{
1867
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
1868
                                                for (int indCombo=0;indCombo<combosFieldPool.size();indCombo++){
1869
                                                        if ( combosFieldPool.get(indCombo).getData().equals(zfs.getZpool().zProperties.get(keyProp).getNameProperty()) ){
1870
                                                                combosFieldPool.get(indCombo).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1871
                                                        }
1872
                                                }
1873
                                        }
1874
                                }
1875
                        }
1876
                }
1877

    
1878
                //Create Chart Provisioned Space
1879
                dataCharset.clear();        
1880
                if ( !zfs.getZpool().zProperties.get("realuseablespace").getValue().equals("")){
1881

    
1882
                        String refUnit =zfs.getZpool().zProperties.get("realuseablespace").getValue().substring(zfs.getZpool().zProperties.get("realuseablespace").getValue().length()-1, zfs.getZpool().zProperties.get("realuseablespace").getValue().length());
1883
                        log.debug(refUnit);
1884
                        float provisionspace = zfs.convertInReferenceUnit(zfs.getZpool().zProperties.get("provisionspace").getValue(), refUnit);
1885
                        float realuseablespace = zfs.convertInReferenceUnit(zfs.getZpool().zProperties.get("realuseablespace").getValue(), refUnit);
1886
                        float provisionspaceInPourcent = guiTrt.dataInPourcent(provisionspace,realuseablespace);
1887
                        float freespace = realuseablespace - provisionspace;
1888
                        float freespaceInPourcent =  guiTrt.dataInPourcent(freespace,realuseablespace);
1889
                        this.dataCharset.put("Provisioned Space: "+ zfs.getZpool().zProperties.get("provisionspace").getValue(), provisionspaceInPourcent);
1890
                        this.dataCharset.put("Free Space: "+BigDecimal.valueOf(freespace).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+refUnit, freespaceInPourcent  );
1891
                        //this.dataCharset.put("Free : "+BigDecimal.valueOf(freeVal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+guiTrt.getUnit(), (100-guiTrt.formatChartDataInPourcent(zfs.getZpool().zProperties.get("provisionedspace").getValue(), zfs.getZpool().zProperties.get("realuseablespace").getValue()))) ;
1892
                        PieDataset dataset = guiTrt.createDataset(dataCharset);  
1893
                        JFreeChart chartVolumeConfig = guiTrt.createChart(dataset, "Provisioned Space on "+zfs.getZpool().zProperties.get("realuseablespace").getValue());
1894
                        if ( chartVolumeComposite != null){
1895
                                if ( !chartVolumeComposite.isDisposed()){
1896
                                        chartVolumeComposite.dispose();
1897
                                }        
1898
                        }
1899

    
1900
                        //Create Grid for Chart
1901
                        gridDataChart =new GridData(SWT.FILL, SWT.FILL, true, true);
1902
                        //gridDataChart.heightHint = 200;
1903
                        //Create Composite for Chart
1904
                        chartVolumeComposite= new ChartComposite(compositeZpoolConfig, SWT.BORDER, chartVolumeConfig, true); 
1905
                        chartVolumeComposite.setLayoutData(gridDataChart);
1906

    
1907
                        //Create Chart Used Space
1908
                        dataCharset.clear();
1909
                        log.debug(refUnit);
1910
                        float usedspace = zfs.convertInReferenceUnit(zfs.getZvol().zProperties.get("used").getValue(), refUnit);
1911
                        float usedspaceInPourcent = guiTrt.dataInPourcent(usedspace,realuseablespace);
1912
                        log.debug("usedspace :"+usedspace+" realuseablespace : "+realuseablespace+" usedspaceInPourcent "+usedspaceInPourcent);
1913
                        freespace = realuseablespace - usedspace;
1914
                        freespaceInPourcent =  guiTrt.dataInPourcent(freespace,realuseablespace);
1915
                        log.debug("freespace : "+freespace+" freespaceInPourcent :"+freespaceInPourcent);
1916
                        this.dataCharset.put("Used Space: "+ zfs.getZvol().zProperties.get("used").getValue(), usedspaceInPourcent);
1917
                        this.dataCharset.put("Free Space: "+BigDecimal.valueOf(freespace).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+refUnit, freespaceInPourcent  );
1918
                        //this.dataCharset.put("Free : "+BigDecimal.valueOf(freeVal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+guiTrt.getUnit(), (100-guiTrt.formatChartDataInPourcent(zfs.getZpool().zProperties.get("provisionedspace").getValue(), zfs.getZpool().zProperties.get("realuseablespace").getValue()))) ;
1919
                        PieDataset datasetUsed = guiTrt.createDataset(dataCharset);  
1920
                        JFreeChart chartZpoolUsedSpace = guiTrt.createChart(datasetUsed, "Used Space on "+zfs.getZpool().zProperties.get("realuseablespace").getValue());
1921
                        if ( chartZpoolUsedComposite != null){
1922
                                if ( !chartZpoolUsedComposite.isDisposed()){
1923
                                        chartZpoolUsedComposite.dispose();
1924
                                }        
1925
                        }
1926

    
1927
                        //Create Grid for Chart
1928
                        gridDataChart =new GridData(SWT.FILL, SWT.FILL, true, true);
1929
                        gridDataChart.heightHint = 200;
1930
                        //gridDataChart.horizontalSpan = 2;
1931
                        //Create Composite for Chart
1932
                        chartZpoolUsedComposite= new ChartComposite(compositeZpoolConfig, SWT.BORDER, chartZpoolUsedSpace, true); 
1933
                        chartZpoolUsedComposite.setLayoutData(gridDataChart);
1934

    
1935

    
1936
                        compositeZpoolConfig.layout();        
1937
                }
1938

    
1939
        }
1940

    
1941
        private void  refreshDisks(){
1942
                zfs.getZpoolStatus();
1943
                for ( int cptL=0;cptL<labelsFieldDisks.size();cptL++){
1944
                        if ( !labelsFieldDisks.get(cptL).isDisposed()){
1945
                                labelsFieldDisks.get(cptL).dispose();        
1946
                        }
1947
                }
1948
                for ( int cptL=0;cptL<labelsFieldZRaid.size();cptL++){
1949
                        if ( !labelsFieldZRaid.get(cptL).isDisposed()){
1950
                                labelsFieldZRaid.get(cptL).dispose();        
1951
                        }
1952
                }
1953

    
1954
                if ( groupDisks != null && !groupDisks.isDisposed()){
1955
                        groupDisks.dispose();
1956
                }
1957
                groupDisks = new Group(compositeDisks,SWT.NONE);
1958
                groupDisks.setBackground(groupBackgroundColor);
1959
                groupDisks.setLayout(new GridLayout());
1960

    
1961
                GridData gridDataDisks=new GridData(SWT.FILL, SWT.FILL, true, true);
1962
                gridDataDisks.horizontalSpan=6;
1963
                groupDisks.setLayoutData(gridDataDisks);
1964

    
1965
                if (scrolledDisks != null && !scrolledDisks.isDisposed()){
1966
                        scrolledDisks.isDisposed();
1967
                }
1968
                scrolledDisks=new ScrolledComposite(groupDisks,SWT.V_SCROLL);
1969
                scrolledDisks.setLayoutData(new GridData(GridData.FILL_BOTH));
1970

    
1971
                if (compositeWidgetDisks != null && !compositeWidgetDisks.isDisposed()){
1972
                        compositeWidgetDisks.isDisposed();
1973
                }
1974
                compositeWidgetDisks=new Composite(scrolledDisks,SWT.NONE);
1975
                compositeWidgetDisks.setBackground(compositeBackgroundColor);
1976
                GridLayout gridLayoutWidgetDisks = new GridLayout();
1977
                gridLayoutWidgetDisks.numColumns =6;
1978
                compositeWidgetDisks.setLayout(gridLayoutWidgetDisks);
1979

    
1980
                GridData gridDataTitleDisks = new GridData(GridData.FILL, GridData.CENTER, true, false);
1981
                gridDataTitleDisks.horizontalSpan = 6;
1982
                if (compositeWidgetDisks != null && !compositeWidgetDisks.isDisposed()){
1983
                        compositeWidgetDisks.isDisposed();
1984
                }
1985
                Label lblTitleInfoDisks = new Label(compositeWidgetDisks, SWT.CENTER|SWT.BORDER);
1986
                lblTitleInfoDisks.setLayoutData(gridDataTitleDisks);
1987
                lblTitleInfoDisks.setFont(fontTitle);
1988
                lblTitleInfoDisks.setBackground(labelTitleBackgroundColor);
1989
                lblTitleInfoDisks.setText("ZFS Informations Disks");
1990

    
1991
                String[] keysPropHashDisks = (String[]) zfs.getHashDisks().keySet().toArray(new String[0]);
1992
                Arrays.sort(keysPropHashDisks);
1993
                String[] keysPropHashZraid = (String[]) zfs.getHashZRaid().keySet().toArray(new String[0]);
1994
                Arrays.sort(keysPropHashZraid);
1995
                //Arrays.sort(keysPropHashZraid);
1996
                for (int cptZraid=0;cptZraid<zfs.getHashZRaid().size();cptZraid++){
1997

    
1998
                        String keyPropHashZraid = keysPropHashZraid[cptZraid];
1999
                        GridData gridDataLabelZraid = new GridData(GridData.FILL, GridData.CENTER, true, false);
2000
                        gridDataLabelZraid.horizontalSpan=6;
2001
                        if (zfs.getZpool().zProperties.get("name").getValue().equalsIgnoreCase(zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("poolname").getValue())){
2002
                                //                        lbl.setText(zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("name").getValue()+" "+zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("raidid").getValue()+zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("raidtype").getValue());
2003
                                if ( !"".equals(zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("raidid").getValue())){
2004
                                        String labelTextZraid="Pool : "+zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("poolname").getValue()+" - "+"Type : "+zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("raidtype").getValue()+ " ID : "+zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("raidid").getValue();
2005
                                        labelsFieldZRaid.add(new Label(compositeWidgetDisks, SWT.BORDER|SWT.CENTER));
2006
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setLayoutData(gridDataLabelZraid);
2007
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setFont(fontSubTitle);
2008
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setBackground(labelFieldBackgroundColor);
2009
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setText(labelTextZraid);
2010
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setData(labelTextZraid);
2011
                                }
2012

    
2013

    
2014
                                for (int cpt=0;cpt<keysPropHashDisks.length;cpt++){
2015
                                        //log.debug("RefreshDisks "+keysPropHashDisks[cpt] );
2016
                                        String keyPropHashDisks = keysPropHashDisks[cpt];
2017
                                        if (zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("poolname").getValue().equalsIgnoreCase(zfs.getZpool().zProperties.get("name").getValue())&& zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("raidid").getValue().equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("raidid").getValue())){
2018

    
2019
                                                labelsFieldDisks.add(new Label(compositeWidgetDisks, SWT.NONE));
2020
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2021
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setFont(fontWidget);
2022
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setBackground(labelFieldBackgroundColor);
2023

    
2024
                                                if (!"0".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("errorread").getValue()) ||
2025
                                                                !"0".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("errorwrite").getValue()) ||
2026
                                                                !"0".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("errorchecksum").getValue())||
2027
                                                                (!"".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("smarthealthstatus").getValue()) && 
2028
                                                                                !"OK".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("smarthealthstatus").getValue()))
2029
                                                                ){
2030
                                                        labelsFieldDisks.get(labelsFieldDisks.size()-1).setImage(imageHardDiskOffline);        
2031
                                                }else{
2032
                                                        labelsFieldDisks.get(labelsFieldDisks.size()-1).setImage(imageHardDiskOnline);
2033
                                                }
2034

    
2035
                                                //labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setData(labelTextZraid);
2036
                                                String[] keysProp = (String[]) zfs.getHashDisks().get(keyPropHashDisks).zProperties.keySet().toArray(new String[0]);
2037
                                                Arrays.sort(keysProp);
2038
                                                String valueProp="";
2039

    
2040
                                                for (int i = 0; i < keysProp.length; i++) {
2041
                                                        keyProp = keysProp[i];
2042
                                                        if ( "noupdateable".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get(keyProp).getType()) ){
2043
                                                                valueProp = valueProp+zfs.getHashDisks().get(keyPropHashDisks).zProperties.get(keyProp).getLabelProperty()+" :"+zfs.getHashDisks().get(keyPropHashDisks).zProperties.get(keyProp).getValue()+"\n";
2044
                                                        }
2045
                                                }        
2046
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setToolTipText(valueProp);        
2047
                                                //log.debug(valueProp);
2048
                                        }
2049

    
2050
                                }        
2051
                        }
2052

    
2053
                }
2054
                scrolledDisks.setContent(compositeWidgetDisks);
2055
                scrolledDisks.setExpandVertical(true);
2056
                scrolledDisks.setExpandHorizontal(true);
2057
                scrolledDisks.setMinSize(compositeWidgetDisks.computeSize(SWT.DEFAULT,SWT.DEFAULT));
2058

    
2059
                scrolledDisks.layout();
2060
                groupDisks.layout();
2061
                compositeWidgetDisks.layout();
2062
                compositeDisks.layout();
2063
                tabFolderConfig.layout();
2064

    
2065
        }
2066

    
2067

    
2068
        private void  refreshCreateZfsVolFS(){
2069

    
2070
                String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
2071
                Arrays.sort(keysProp);
2072
                log.debug("Label SIze "+labelsFieldCreateVol.size());
2073
                for ( int cptL=0;cptL<labelsFieldCreateVol.size();cptL++){
2074
                        labelsFieldCreateVol.get(cptL).dispose();        
2075

    
2076
                }
2077
                for ( int cptL=0;cptL<textsFieldCreateVol.size();cptL++){
2078
                        textsFieldCreateVol.get(cptL).dispose();        
2079
                }
2080
                for ( int cptL=0;cptL<combosFieldCreateVol.size();cptL++){
2081
                        combosFieldCreateVol.get(cptL).dispose();        
2082
                }
2083
                labelsFieldCreateVol.clear();
2084
                textsFieldCreateVol.clear();
2085
                combosFieldCreateVol.clear();
2086
                if (btnCreateZfsVolFS!=null && !btnCreateZfsVolFS.isDisposed()){
2087
                        btnCreateZfsVolFS.dispose();
2088
                }
2089
                if (groupCreateVolFS !=null && !groupCreateVolFS.isDisposed()){
2090
                        groupCreateVolFS.dispose();
2091
                }
2092
                if (scrolledCreateVol !=null &&!scrolledCreateVol.isDisposed()){
2093
                        scrolledCreateVol.dispose();
2094
                }
2095
                if (compositeWidgetCreateVolFS!=null && !compositeWidgetCreateVolFS.isDisposed()){
2096
                        compositeWidgetCreateVolFS.dispose();
2097
                }
2098

    
2099

    
2100

    
2101

    
2102
                groupCreateVolFS=new Group(compositeCreateVolFS,SWT.NONE);
2103
                groupCreateVolFS.setBackground(groupBackgroundColor);
2104
                groupCreateVolFS.setLayout(new GridLayout());
2105
                //GridData gridData=new GridData(GridData.FILL_HORIZONTAL);
2106
                GridData gridData=new GridData(SWT.FILL, SWT.FILL, true, true);
2107
                //gridData.heightHint=450;
2108
                groupCreateVolFS.setLayoutData(gridData);
2109
                scrolledCreateVol=new ScrolledComposite(groupCreateVolFS,SWT.V_SCROLL);
2110
                scrolledCreateVol.setLayoutData(new GridData(GridData.FILL_BOTH));
2111
                compositeWidgetCreateVolFS=new Composite(scrolledCreateVol,SWT.NONE);
2112
                compositeWidgetCreateVolFS.setBackground(compositeBackgroundColor);
2113
                GridLayout gridLayoutPane = new GridLayout();
2114
                gridLayoutPane.numColumns =2;
2115
                compositeWidgetCreateVolFS.setLayout(gridLayoutPane);
2116

    
2117
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
2118
                gridDataTitle.horizontalSpan = 2;
2119
                Label lblTitle = new Label(compositeWidgetCreateVolFS, SWT.CENTER|SWT.BORDER);
2120
                lblTitle.setLayoutData(gridDataTitle);
2121
                lblTitle.setFont(fontTitle);
2122
                lblTitle.setBackground(labelTitleBackgroundColor);
2123
                lblTitle.setText("Create a ZFS Volume or ZFS FileSystem");
2124

    
2125

    
2126

    
2127
                labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2128
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2129
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2130
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get("type").getLabelProperty());
2131
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("type").getNameProperty());
2132

    
2133
                combosFieldCreateVol.add(new Combo(compositeWidgetCreateVolFS, SWT.NONE));
2134
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2135
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("type").getNameProperty());
2136
                String[] keysPermitValue = (String[]) zfs.getZvol().zProperties.get("type").getPermitValue().keySet().toArray(new String[0]);
2137
                for (int cpt=0;cpt <zfs.getZvol().zProperties.get("type").getPermitValue().size();cpt++){
2138
                        String keyPermitValue = keysPermitValue[cpt];
2139
                        combosFieldCreateVol.get(combosFieldCreateVol.size()-1).add(zfs.getZvol().zProperties.get("type").getPermitValue().get(keyPermitValue).toString());
2140
                }
2141

    
2142
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get("type").getValue());
2143
                //zfs.getZvol().zProperties.get("type").setValue(zfs.getZvol().zProperties.get("type").getPermitValue().get("volume").toString());
2144
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).addListener(SWT.Selection, new Listener() {
2145

    
2146
                        public void handleEvent(final Event event) {
2147
                                final Combo comboType = (Combo) event.widget;
2148

    
2149

    
2150
                                zfs.getZvol().zProperties.get("type").setValue(comboType.getText());
2151
                                refreshCreateZfsVolFS();
2152
                                compositeWidgetCreateVolFS.layout();
2153
                                compositeCreateVolFS.layout();
2154

    
2155
                                log.debug(combosFieldCreateVol.size());
2156
                        }
2157
                });
2158

    
2159
                labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2160
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2161
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2162
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get("name").getLabelProperty());
2163
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("name").getNameProperty());
2164

    
2165
                textsFieldCreateVol.add(new Text(compositeWidgetCreateVolFS, SWT.WRAP|SWT.BORDER));
2166
                textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2167
                textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("name").getNameProperty());
2168
                textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setText("");
2169

    
2170
                for (int i = 0; i < keysProp.length; i++) {
2171
                        keyProp = keysProp[i];
2172
                        log.debug(keyProp);
2173
                        if ( ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2174
                                        ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2175
                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf())) ) ||
2176
                                                        ("filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2177
                                                                        ("fs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2178
                                                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) ) )                
2179
                                                                                        || ("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()))
2180

    
2181
                                        ){
2182
                                log.debug("DEBUG : "+ keyProp+ " "+zfs.getZvol().zProperties.get(keyProp).getType());
2183
                                if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) ||keyProp =="volblocksize"){
2184
                                        labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2185
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2186
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2187
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getLabelProperty());
2188
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2189

    
2190
                                        textsFieldCreateVol.add(new Text(compositeWidgetCreateVolFS, SWT.WRAP|SWT.BORDER));
2191
                                        textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2192
                                        textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2193
                                        textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2194

    
2195
                                }else{
2196

    
2197
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) && !"type".equals(keyProp)){
2198
                                                labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2199
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2200
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2201
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getLabelProperty());
2202
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2203

    
2204
                                                combosFieldCreateVol.add(new Combo(compositeWidgetCreateVolFS, SWT.NONE));
2205
                                                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2206
                                                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2207
                                                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2208
                                                keysPermitValue = (String[]) zfs.getZvol().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
2209
                                                for (int cpt=0;cpt <zfs.getZvol().zProperties.get(keyProp).getPermitValue().size();cpt++){
2210
                                                        String keyPermitValue = keysPermitValue[cpt];
2211
                                                        combosFieldCreateVol.get(combosFieldCreateVol.size()-1).add(zfs.getZvol().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
2212
                                                }
2213
                                        }
2214

    
2215
                                }
2216

    
2217
                        }
2218

    
2219
                }
2220

    
2221

    
2222
                scrolledCreateVol.setContent(compositeWidgetCreateVolFS);
2223
                scrolledCreateVol.setExpandVertical(true);
2224
                scrolledCreateVol.setExpandHorizontal(true);
2225
                scrolledCreateVol.setMinSize(compositeWidgetCreateVolFS.computeSize(SWT.DEFAULT,SWT.DEFAULT));
2226

    
2227

    
2228
                if (groupActiveIscsi!=null && !groupActiveIscsi.isDisposed() ){
2229
                        groupActiveIscsi.dispose();
2230
                }
2231
                if  ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2232
                        groupActiveIscsi=new Group(compositeCreateVolFS,SWT.NONE);
2233
                        groupActiveIscsi.setBackground(groupBackgroundColor);
2234
                        groupActiveIscsi.setLayout(new GridLayout());
2235
                        GridLayout gridLayoutActiveIscsi = new GridLayout();
2236
                        gridLayoutActiveIscsi.numColumns =2;
2237
                        groupActiveIscsi.setLayout(gridLayoutActiveIscsi);
2238
                        //GridData gridDataActiveIscsi=new GridData(GridData.FILL_HORIZONTAL);
2239
                        GridData gridDataActiveIscsi=new GridData(SWT.FILL, SWT.FILL, true, true);
2240
                        //gridDataActiveIscsi.heightHint=200;
2241
                        groupActiveIscsi.setLayoutData(gridDataActiveIscsi);
2242

    
2243
                        GridData gridDataTitleIscsi = new GridData(GridData.FILL, GridData.CENTER, true, false);
2244
                        gridDataTitleIscsi.horizontalSpan = 2;
2245
                        //Iscsi Section
2246
                        Label lblTitleIscsi = new Label(groupActiveIscsi, SWT.CENTER|SWT.BORDER);
2247
                        lblTitleIscsi.setLayoutData(gridDataTitleIscsi);
2248
                        lblTitleIscsi.setFont(fontTitle);
2249
                        lblTitleIscsi.setBackground(labelTitleBackgroundColor);
2250
                        lblTitleIscsi.setText("ISCSI Parameters");
2251
                        keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
2252
                        Arrays.sort(keysProp);
2253
                        labelsFieldCreateIscsi.clear();
2254
                        textsFieldCreateIscsi.clear();
2255
                        combosFieldCreateIscsi.clear();
2256
                        for (int i = 0; i < keysProp.length; i++) {
2257
                                keyProp = keysProp[i];
2258

    
2259

    
2260
                                if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2261
                                        Label lbl = new Label(groupActiveIscsi, SWT.NONE);
2262
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2263
                                        lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
2264
                                        lbl.setFont(fontWidget);
2265
                                        lbl.setBackground(labelFieldBackgroundColor);
2266
                                        labelsFieldCreateIscsi.add(new Label(groupActiveIscsi, SWT.NONE));
2267
                                        labelsFieldCreateIscsi.get(labelsFieldCreateIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2268
                                        labelsFieldCreateIscsi.get(labelsFieldCreateIscsi.size()-1).setBackground(labelFieldBackgroundColor);
2269
                                        //labelsField.get(labelsField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2270
                                        labelsFieldCreateIscsi.get(labelsFieldCreateIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2271
                                }else{
2272
                                        if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
2273
                                                Label lbl = new Label(groupActiveIscsi, SWT.NONE);
2274
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2275
                                                lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
2276
                                                lbl.setFont(fontWidget);
2277
                                                lbl.setBackground(labelFieldBackgroundColor);
2278

    
2279
                                                textsFieldCreateIscsi.add(new Text(groupActiveIscsi, SWT.WRAP|SWT.BORDER));
2280
                                                textsFieldCreateIscsi.get(textsFieldCreateIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2281
                                                textsFieldCreateIscsi.get(textsFieldCreateIscsi.size()-1).setBackground(textFieldBackgroundColor);
2282
                                                //textsField.get(textsField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2283
                                                textsFieldCreateIscsi.get(textsFieldCreateIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2284

    
2285
                                        }else{
2286

    
2287
                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
2288
                                                        Label lbl = new Label(groupActiveIscsi, SWT.NONE);
2289
                                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2290
                                                        lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
2291
                                                        lbl.setFont(fontWidget);
2292
                                                        lbl.setBackground(labelFieldBackgroundColor);
2293

    
2294
                                                        combosFieldCreateIscsi.add(new Combo(groupActiveIscsi, SWT.NONE));
2295
                                                        combosFieldCreateIscsi.get(combosFieldCreateIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2296
                                                        combosFieldCreateIscsi.get(combosFieldCreateIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2297
                                                        //combosField.get(combosField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2298
                                                        keysPermitValue = (String[]) zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
2299
                                                        for (int cpt=0;cpt <zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().size();cpt++){
2300
                                                                String keyPermitValue = keysPermitValue[cpt];
2301
                                                                combosFieldCreateIscsi.get(combosFieldCreateIscsi.size()-1).add(zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
2302
                                                        }
2303
                                                }
2304
                                        }
2305

    
2306
                                }
2307
                                log.debug("DEBUG : "+ keyProp+ " "+zfs.getZiscsi().zProperties.get(keyProp).getType());
2308

    
2309
                        }
2310

    
2311
                }
2312
                btnCreateZfsVolFS = new Button(compositeCreateVolFS, SWT.None);
2313
                GridData gridDataBtnCreateZfsVolFS = new GridData(GridData.FILL, GridData.CENTER, true, false);
2314
                gridDataBtnCreateZfsVolFS.horizontalSpan = 2;
2315
                btnCreateZfsVolFS.setLayoutData(gridDataBtnCreateZfsVolFS);
2316
                btnCreateZfsVolFS.setText("Create Now");
2317
                btnCreateZfsVolFS.addListener(SWT.Selection, new Listener() {
2318

    
2319
                        public void handleEvent(final Event event) {
2320

    
2321
                                for (int indText=0;indText<textsFieldCreateVol.size();indText++){
2322
                                        if (textsFieldCreateVol.get(indText).getData().toString().equals("name")){
2323
                                                zfs.getZvol().zProperties.get("name").setValue(textsFieldCreateVol.get(indText).getText());
2324
                                        }
2325
                                }
2326
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("") ){
2327
                                        String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
2328
                                        Arrays.sort(keysProp);
2329
                                        for (int i = 0; i < keysProp.length; i++) {
2330
                                                keyProp = keysProp[i];
2331
                                                log.debug(keyProp);
2332
                                                if ( ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2333
                                                                ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2334
                                                                                "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf())) ) ||
2335
                                                                                ("filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2336
                                                                                                ("fs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2337
                                                                                                                "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) ) )                
2338
                                                                                                                || ("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()))
2339

    
2340
                                                                ){
2341
                                                        log.debug("DEBUG : "+ keyProp+ " "+zfs.getZvol().zProperties.get(keyProp).getType());
2342
                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) ||keyProp =="volblocksize"){
2343
                                                                for (int indText=0;indText<textsFieldCreateVol.size();indText++){
2344
                                                                        if ( textsFieldCreateVol.get(indText).getData().equals(keyProp) ){
2345
                                                                                zfs.getZvol().zProperties.get(keyProp).setValue(textsFieldCreateVol.get(indText).getText());
2346
                                                                        }
2347
                                                                }
2348
                                                        }else{
2349

    
2350
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) && !"type".equals(keyProp)){
2351
                                                                        for (int indCombo=0;indCombo<combosFieldCreateVol.size();indCombo++){
2352
                                                                                if ( combosFieldCreateVol.get(indCombo).getData().equals(keyProp) ){
2353
                                                                                        zfs.getZvol().zProperties.get(keyProp).setValue(combosFieldCreateVol.get(indCombo).getText());
2354
                                                                                }
2355
                                                                        }
2356
                                                                }
2357
                                                        }
2358
                                                }
2359
                                        }
2360

    
2361
                                        thrCreateZFSVol = new Thread(new Runnable(){
2362
                                                public void run() {
2363
                                                        Display.getDefault().syncExec(new Runnable() {
2364
                                                                public void run() {
2365
                                                                        if (wPB.s.isDisposed()){
2366
                                                                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
2367
                                                                                wPB.open();
2368
                                                                        }else{
2369
                                                                                wPB.open();
2370
                                                                        }
2371

    
2372

    
2373
                                                                }
2374
                                                        });
2375

    
2376
                                                        zfs.zfsCreateVolFS();
2377
                                                        Display.getDefault().syncExec(new Runnable(){
2378
                                                                public void run(){
2379
                                                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
2380
                                                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
2381
                                                                        Arrays.sort(keysPropError);
2382
                                                                        String textBox = "";
2383
                                                                        for (int i = 0; i < keysPropError.length; i++) {
2384
                                                                                String keyPropError = keysPropError[i];
2385
                                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
2386
                                                                        }
2387
                                                                        if (keysPropError.length>0){
2388
                                                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
2389
                                                                                messageBoxInfo.setText("Warning");
2390
                                                                                messageBoxInfo.setMessage(textBox);
2391
                                                                                messageBoxInfo.open();
2392
                                                                                wPB.close();
2393
                                                                        }else{
2394
                                                                                if ("volume".equals(zfs.getZvol().zProperties.get("type").getValue())||
2395
                                                                                                "snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
2396

    
2397
                                                                                        String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
2398
                                                                                        Arrays.sort(keysProp);
2399

    
2400
                                                                                        for (int i = 0; i < keysProp.length; i++) {
2401
                                                                                                keyProp = keysProp[i];
2402
                                                                                                log.debug("btnCreateIscsi :"+keyProp);
2403
                                                                                                if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2404
                                                                                                        for (int indLabel=0;indLabel<labelsFieldCreateIscsi.size();indLabel++){
2405
                                                                                                                if ( labelsFieldCreateIscsi.get(indLabel).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2406
                                                                                                                        zfs.getZiscsi().zProperties.get(keyProp).setValue(labelsFieldCreateIscsi.get(indLabel).getText());
2407
                                                                                                                }
2408
                                                                                                        }
2409
                                                                                                }else{
2410
                                                                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2411
                                                                                                                for (int indText=0;indText<textsFieldCreateIscsi.size();indText++){
2412
                                                                                                                        if ( textsFieldCreateIscsi.get(indText).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2413
                                                                                                                                zfs.getZiscsi().zProperties.get(keyProp).setValue(textsFieldCreateIscsi.get(indText).getText());
2414
                                                                                                                        }
2415
                                                                                                                }
2416

    
2417
                                                                                                        }else{
2418

    
2419
                                                                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2420
                                                                                                                        for (int indList=0;indList<combosFieldCreateIscsi.size();indList++){
2421
                                                                                                                                log.debug("first loop"+combosFieldCreateIscsi.get(indList).getData()+" "+zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2422

    
2423
                                                                                                                                if ( combosFieldCreateIscsi.get(indList).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2424
                                                                                                                                        zfs.getZiscsi().zProperties.get(keyProp).setValue(combosFieldCreateIscsi.get(indList).getText());
2425
                                                                                                                                        log.debug(zfs.getZiscsi().zProperties.get(keyProp).getMultivalues());
2426
                                                                                                                                }
2427
                                                                                                                        }
2428
                                                                                                                }
2429
                                                                                                        }
2430
                                                                                                }
2431
                                                                                        }
2432
                                                                                        if ("snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
2433
                                                                                                zfs.getZiscsi().zProperties.get("iomode").setValue("ro");
2434
                                                                                        }
2435
                                                                                        zfs.getZiscsi().zProperties.get("name").setValue(zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue());
2436
                                                                                        zfs.zfsCreateIscsi();
2437
                                                                                        keysPropError = zfs.getError().keySet().toArray(new String[0]);
2438
                                                                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
2439
                                                                                        Arrays.sort(keysPropError);
2440
                                                                                        textBox = "";
2441
                                                                                        for (int i = 0; i < keysPropError.length; i++) {
2442
                                                                                                String keyPropError = keysPropError[i];
2443
                                                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
2444
                                                                                        }
2445
                                                                                        if (keysPropError.length>0){
2446
                                                                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
2447
                                                                                                messageBoxInfo.setText("Warning");
2448
                                                                                                messageBoxInfo.setMessage("ZFS Volume created but ISCSI Configuration is failed.\n"+textBox);
2449
                                                                                                messageBoxInfo.open();
2450
                                                                                                wPB.close();
2451
                                                                                        }
2452
                                                                                }
2453

    
2454

    
2455
                                                                                int indRoot=0;
2456
                                                                                int indItem=0;
2457
                                                                                for (int indT=0;indT<tree.getItemCount();indT++){
2458
                                                                                        if (tree.getItem(indT).getData().toString().equals(zfs.getZserver().zProperties.get("serverIP").getValue())){
2459
                                                                                                for (int indTreeVolFS=0;indTreeVolFS<tree.getItem(indT).getItemCount();indTreeVolFS++){
2460
                                                                                                        if (tree.getItem(indT).getItem(indTreeVolFS).getData().toString().compareTo(zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue()) >0){
2461
                                                                                                                if (zfs.getError().size()>0){
2462
                                                                                                                        updateItemTreeZfsList(false, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2463
                                                                                                                }else{
2464
                                                                                                                        updateItemTreeZfsList(true, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2465
                                                                                                                }
2466
                                                                                                                indRoot=indT;
2467
                                                                                                                indItem=indTreeVolFS;
2468
                                                                                                                break;
2469
                                                                                                        }
2470
                                                                                                }
2471
                                                                                                if ( indItem==0){
2472
                                                                                                        int indTreeVolFS=tree.getItem(indT).getItemCount();
2473
                                                                                                        if (zfs.getError().size()>0){
2474
                                                                                                                updateItemTreeZfsList(false, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2475
                                                                                                        }else{
2476
                                                                                                                updateItemTreeZfsList(true, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2477
                                                                                                        }
2478
                                                                                                        indRoot=indT;
2479
                                                                                                        indItem=indTreeVolFS;
2480
                                                                                                }
2481
                                                                                                tree.layout();
2482
                                                                                        }
2483
                                                                                }
2484

    
2485
                                                                                log.debug("Create Vol ISCI "+zfs.getZvol().zProperties.get("type").getValue());
2486
                                                                                compositeTabVolConfig.layout();
2487
                                                                                wPB.close();
2488

    
2489
                                                                                refreshCreateZfsVolFS();
2490
                                                                        }
2491
                                                                }
2492
                                                        });
2493
                                                }
2494
                                        });
2495
                                        thrCreateZFSVol.start();
2496
                                }
2497
                        }
2498
                });
2499
                compositeCreateVolFS.layout();
2500
        }
2501

    
2502
        private void refreshIscsiSession(){
2503

    
2504

    
2505
                zfs.getIscsiListConfigVol(zfs.getZvol().zProperties.get("name").getValue());        
2506
                log.debug("refreshIscsiSesiont : "+zfs.getZiscsi().zProperties.get("sid").getMultivalues().size());
2507

    
2508

    
2509

    
2510
                tableIscsiSession.removeAll();
2511
                for (int i=0;i<zfs.getZiscsi().zProperties.get("sid").getMultivalues().size();i++){
2512
                        TableItem item = new TableItem(tableIscsiSession, SWT.NONE);
2513
                        item.setText(0, zfs.getZiscsi().zProperties.get("sid").getMultivalues().get(i).toString());
2514
                        item.setText(1, zfs.getZiscsi().zProperties.get("sessionIP").getMultivalues().get(i).toString());
2515

    
2516
                }
2517
                String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
2518
                Arrays.sort(keysProp);
2519

    
2520
                for (int i = 0; i < keysProp.length; i++) {
2521
                        keyProp = keysProp[i];
2522
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2523
                                for (int indLabel=0;indLabel<labelsFieldAddIscsi.size();indLabel++){
2524
                                        if ( labelsFieldAddIscsi.get(indLabel).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2525
                                                labelsFieldAddIscsi.get(indLabel).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2526
                                        }
2527
                                }
2528
                        }else{
2529
                                if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2530
                                        for (int indText=0;indText<textsFieldAddIscsi.size();indText++){
2531
                                                if ( textsFieldAddIscsi.get(indText).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2532
                                                        textsFieldAddIscsi.get(indText).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2533
                                                }
2534
                                        }
2535

    
2536
                                }else{
2537

    
2538
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2539
                                                for (int indCombo=0;indCombo<combosFieldAddIscsi.size();indCombo++){
2540
                                                        if ( combosFieldAddIscsi.get(indCombo).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2541
                                                                combosFieldAddIscsi.get(indCombo).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2542
                                                        }
2543
                                                }
2544
                                        }
2545
                                }
2546
                        }
2547
                }
2548
        }
2549

    
2550
        private void refreshConfigSnapshot(){
2551

    
2552
                zsnap = zfs;
2553
                zsnap.getZsnapshotConfig();
2554
                String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
2555
                Arrays.sort(keysProp);
2556

    
2557
                for (int i = 0; i < keysProp.length; i++) {
2558
                        keyProp = keysProp[i];
2559
                        if ( "noupdateable".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
2560
                                for (int indLabel=0;indLabel<labelsFieldSnapshots.size();indLabel++){
2561
                                        if ( labelsFieldSnapshots.get(indLabel).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2562
                                                labelsFieldSnapshots.get(indLabel).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2563
                                                log.debug("REFRESHConfig 1: ");
2564
                                        }
2565
                                }
2566
                        }else{
2567
                                if ( "freeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
2568
                                        for (int indText=0;indText<textsFieldSnapshots.size();indText++){
2569
                                                if ( textsFieldSnapshots.get(indText).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2570
                                                        textsFieldSnapshots.get(indText).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2571
                                                        log.debug("REFRESHConfig2 : ");
2572
                                                }
2573
                                        }
2574

    
2575
                                }else{
2576

    
2577
                                        if ( "nofreeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
2578
                                                for (int indCombo=0;indCombo<listsFieldSnaphots.size();indCombo++){
2579
                                                        if ( listsFieldSnaphots.get(indCombo).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2580
                                                                //listsFieldSnaphots.get(indCombo).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2581
                                                                labelsFieldSnapshotsValue.get(indCombo).setText("Current values : "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2582
                                                                log.debug("REFRESHConfig3 : "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2583

    
2584
                                                        }
2585
                                                }
2586
                                        }
2587
                                }
2588
                        }
2589
                }
2590
        }
2591

    
2592
        private void refreshConfigReplica(){
2593

    
2594
                //zsnap = zfs;
2595
                zfs.getZreplicaConfig();
2596
                String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
2597
                Arrays.sort(keysProp);
2598

    
2599
                for (int i = 0; i < keysProp.length; i++) {
2600
                        keyProp = keysProp[i];
2601
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
2602
                                for (int indLabel=0;indLabel<labelsFieldReplica.size();indLabel++){
2603
                                        if ( labelsFieldReplica.get(indLabel).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2604
                                                labelsFieldReplica.get(indLabel).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2605
                                                log.debug("REFRESHConfig 1: ");
2606
                                        }
2607
                                }
2608
                        }else{
2609
                                if ( "freeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
2610
                                        for (int indText=0;indText<textsFieldReplica.size();indText++){
2611
                                                if ( textsFieldReplica.get(indText).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2612
                                                        textsFieldReplica.get(indText).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2613
                                                        log.debug("REFRESHConfig2 : ");
2614
                                                }
2615
                                        }
2616

    
2617
                                }else{
2618

    
2619
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())&& zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() !=null) {
2620
                                                for (int indCombo=0;indCombo<listsFieldReplica.size();indCombo++){
2621
                                                        if ( listsFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2622
                                                                //listsFieldSnaphots.get(indCombo).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2623
                                                                labelsFieldReplicaValue.get(indCombo).setText("Current values : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2624
                                                                log.debug("REFRESHConfig3 : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2625

    
2626
                                                        }
2627
                                                }
2628
                                        }
2629
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())&& zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() ==null) {
2630
                                                for (int indCombo=0;indCombo<combosFieldReplica.size();indCombo++){
2631

    
2632
                                                        if (keyProp.equalsIgnoreCase("server")){
2633
                                                                for (int indLabel=0;indLabel<labelsFieldReplica.size();indLabel++){
2634
                                                                        if ( labelsFieldReplica.get(indLabel).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2635
                                                                                labelsFieldReplica.get(indLabel).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2636
                                                                                log.debug("REFRESHConfig 1: ");
2637
                                                                        }
2638
                                                                }
2639

    
2640
                                                                if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2641
                                                                        combosFieldReplica.get(indCombo).removeAll();
2642
                                                                        String[] keysPropSrv = (String[]) zfs.getCacheSession().keySet().toArray(new String[0]);
2643
                                                                        Arrays.sort(keysPropSrv);
2644
                                                                        for (int cptSrv=0;cptSrv<keysPropSrv.length;cptSrv++){
2645
                                                                                String keyPropSrv=keysPropSrv[cptSrv];
2646
                                                                                combosFieldReplica.get(indCombo).add(keyPropSrv);
2647
                                                                        }
2648
                                                                        //listsFieldSnaphots.get(indCombo).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2649
                                                                        //combosFieldReplica.get(indCombo).setText("Current values : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2650
                                                                        log.debug("REFRESHConfig3 : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2651
                                                                        combosFieldReplica.get(indCombo).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2652
                                                                }
2653
                                                        }else{
2654
                                                                if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2655
                                                                        combosFieldReplica.get(indCombo).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2656
                                                                }
2657
                                                        }
2658
                                                }
2659

    
2660
                                        }
2661
                                }
2662
                        }
2663
                }
2664
        }
2665

    
2666

    
2667

    
2668
        private void refreshConfigVolume(){
2669

    
2670
                String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
2671
                Arrays.sort(keysProp);
2672

    
2673
                if ( "snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())) {
2674
                        for (int i=0;i<keysProp.length;i++){
2675
                                keyProp = keysProp[i];
2676
                                for (int indLabel=0;indLabel<labelsField.size();indLabel++){
2677
                                        if ( labelsField.get(indLabel).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty()) ){
2678
                                                labelsField.get(indLabel).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2679
                                        }
2680
                                }
2681
                        }
2682
                }else{
2683
                        for (int i=0;i<keysProp.length;i++){
2684
                                keyProp = keysProp[i];
2685
                                if ( "noupdateable".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
2686
                                        for (int indLabel=0;indLabel<labelsField.size();indLabel++){
2687
                                                if ( labelsField.get(indLabel).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty())){
2688
                                                        labelsField.get(indLabel).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2689
                                                }
2690

    
2691
                                        }
2692
                                }else{
2693
                                        if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
2694
                                                for (int indText=0;indText<textsField.size();indText++){
2695
                                                        if ( textsField.get(indText).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty()) ){
2696
                                                                textsField.get(indText).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2697
                                                        }
2698
                                                }
2699

    
2700
                                        }else{
2701

    
2702
                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
2703
                                                        for (int indCombo=0;indCombo<combosField.size();indCombo++){
2704
                                                                if ( combosField.get(indCombo).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty()) ){
2705
                                                                        combosField.get(indCombo).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2706
                                                                }
2707
                                                        }
2708
                                                }
2709
                                        }
2710
                                }
2711
                        }
2712
                        Button btnSaveChange = new Button(compositeConfig,SWT.WRAP|SWT.BORDER);
2713
                        GridData gridDataBtnSaveChanges = new GridData(GridData.FILL, GridData.CENTER, true, false);
2714
                        //gridDataChart.heightHint = 250;
2715
                        //gridDataChart.horizontalSpan = 2;
2716
                        btnSaveChange.setText("Save Changes");
2717
                        btnSaveChange.setLayoutData(gridDataBtnSaveChanges);
2718
                        Button btnDestroyVolFS = new Button(compositeConfig,SWT.WRAP|SWT.BORDER);
2719
                        GridData gridDataBtnDestroyVolFS = new GridData(GridData.FILL, GridData.CENTER, true, false);
2720
                        btnSaveChange.setEnabled(false);
2721
                        //gridDataChart.heightHint = 250;
2722
                        //gridDataChart.horizontalSpan = 2;
2723
                        btnDestroyVolFS.setText("Delete");
2724
                        btnDestroyVolFS.setLayoutData(gridDataBtnDestroyVolFS);
2725
                        btnDestroyVolFS.addListener(SWT.Selection, new Listener() {
2726

    
2727
                                public void handleEvent(final Event event) {
2728
                                        log.debug("btnDestroyVolFS.addListener :"+zfs.getZvol().zProperties.get("name").getValue()+" "+zfs.getZvol().zProperties.get("type").getValue());
2729
                                        destroyVolFS();
2730
                                }
2731
                        });
2732

    
2733
                        guiTrt=new guiTrt();
2734
                        //create Chart
2735
                        if ( "volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())) {
2736
                                guiTrt.formatChartValue(zfs.getZvol().zProperties.get("volsize").getValue(), zfs.getZvol().zProperties.get("usedbydataset").getValue(), zfs.getZvol().zProperties.get("usedbysnapshots").getValue());        
2737
                        }else{
2738
                                if ( "filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())) {
2739
                                        guiTrt.formatChartValue(zfs.getZvol().zProperties.get("available").getValue(), zfs.getZvol().zProperties.get("usedbydataset").getValue(), zfs.getZvol().zProperties.get("usedbysnapshots").getValue());
2740
                                }
2741
                        }
2742

    
2743
                        dataCharset.clear();
2744
                        this.dataCharset.put("Used By Data : "+zfs.getZvol().zProperties.get("usedbydataset").getValue(), guiTrt.getZfsUsedByData()) ;
2745
                        this.dataCharset.put("Used By Snapshots : "+zfs.getZvol().zProperties.get("usedbysnapshots").getValue(), guiTrt.getZfsUsedBySnapshots()) ;
2746
                        this.dataCharset.put("Free : "+BigDecimal.valueOf(guiTrt.getZfsFree()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+guiTrt.getUnit(), guiTrt.getZfsFreePourcent()) ;
2747
                        PieDataset dataset = guiTrt.createDataset(dataCharset);  
2748
                        JFreeChart chartVolumeConfig = guiTrt.createChart(dataset, "Total Volume size : "+zfs.getZvol().zProperties.get("volsize").getValue());
2749
                        if ( chartVolumeComposite != null){
2750
                                if ( !chartVolumeComposite.isDisposed()){
2751
                                        chartVolumeComposite.dispose();
2752
                                }        
2753
                        }
2754

    
2755
                        //Create Grid for Chart
2756
                        //gridDataChart = new GridData(GridData.FILL, GridData.CENTER, true, false);
2757
                        gridDataChart = new GridData(SWT.FILL, SWT.FILL, true, true);
2758
                        //gridDataChart.heightHint = 275;
2759
                        //gridDataChart.heightHint =compositeConfig.
2760
                        gridDataChart.horizontalSpan = 2;
2761
                        //Create Composite for Chart
2762
                        chartVolumeComposite= new ChartComposite(compositeConfig, SWT.BORDER, chartVolumeConfig, true); 
2763
                        chartVolumeComposite.setLayoutData(gridDataChart);
2764
                        chartVolumeComposite.layout();
2765
                        compositeConfig.layout();
2766
                }
2767

    
2768
        }
2769

    
2770
        public void updateItemTreeZfsList(Boolean statusIscsi, String itemData,  TreeItem rootTree, String infoUsedSize, int indexTree){
2771
                TreeItem root;
2772
                if (indexTree ==-1){
2773
                        root = new TreeItem(rootTree, SWT.None);
2774
                }else{
2775
                        root = new TreeItem(rootTree,SWT.None, indexTree);
2776
                }
2777
                root.setText(itemData+" ("+infoUsedSize+")");
2778

    
2779

    
2780
                if (statusIscsi){
2781
                        if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
2782
                                root.setImage(imageFSOnline);
2783
                        }else{
2784
                                root.setImage(imageStorageOnline);        
2785
                        }
2786

    
2787
                }else{
2788
                        if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
2789
                                root.setImage(imageFSOffline);
2790
                        }else{
2791
                                root.setImage(imageStorageOffline);        
2792
                        }
2793

    
2794
                }
2795
                root.setData(itemData);        
2796
                //Set Object Zvol to empty
2797
                zfs.setZvol();        
2798
                zfs.setZiscsi();
2799
        }
2800

    
2801

    
2802
        public void actionClickTree(Event evt){
2803
                final TreeItem root = (TreeItem) evt.item;
2804
                strItemServer ="";
2805
                strItemZvolFS="";
2806
                countItem=0;
2807
                thrGetallZvol = new Thread(new Runnable() {
2808

    
2809
                        public void run() {
2810
                                Display.getDefault().syncExec(new Runnable() {
2811
                                        public void run() {
2812
                                                wPB.open();
2813

    
2814
                                        }
2815
                                });
2816

    
2817

    
2818
                                Display.getDefault().syncExec(new Runnable() {
2819
                                        public void run() {
2820

    
2821
                                                if ( root.getParentItem() != null){
2822

    
2823
                                                        final TreeItem parentRoot = root.getParentItem();
2824
                                                        if ( parentRoot.getParentItem() != null){
2825
                                                                strItemServer=parentRoot.getParentItem().getData().toString();
2826

    
2827
                                                        }else{
2828
                                                                strItemServer=root.getParentItem().getData().toString();
2829

    
2830
                                                        }
2831

    
2832
                                                        strItemZvolFS=root.getData().toString();
2833
                                                        log.debug(strItemZvolFS);
2834
                                                        countItem=root.getItemCount();
2835
                                                        if (countItem <1){
2836
                                                                root.clearAll(true);
2837
                                                                root.setItemCount(0);
2838
                                                        }
2839
                                                }
2840
                                        }
2841
                                });
2842
                                if (!strItemServer.equalsIgnoreCase("")){
2843
                                        zfs.getServer(strItemServer);
2844
                                        zfs.zfsGetAllVolume(strItemZvolFS);
2845

    
2846
                                        if ( countItem <1 && !zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
2847
                                                final List<Object> zlistSnapshots = zfs.zfsListSnapshotsByVolFS(strItemZvolFS);
2848

    
2849
                                                Display.getDefault().syncExec(new Runnable() {
2850
                                                        public void run() {
2851

    
2852
                                                                for (int i = 0; i < zlistSnapshots.size(); i++) {
2853
                                                                        TreeItem item = new TreeItem(root, 0);
2854
                                                                        item.setText(zlistSnapshots.get(i).toString());
2855
                                                                        item.setData(zlistSnapshots.get(i).toString());
2856
                                                                        if ( zfs.getIscsiListConfigVol(zlistSnapshots.get(i).toString()) && ! "".equalsIgnoreCase(zfs.getZiscsi().zProperties.get("tid").getValue())){
2857
                                                                                item.setImage(imageSnapshotOnline);
2858
                                                                        }else{
2859
                                                                                item.setImage(imageSnapshotOffline);
2860
                                                                        }
2861

    
2862
                                                                }
2863
                                                        }
2864
                                                });
2865
                                        }
2866

    
2867
                                        Display.getDefault().syncExec(new Runnable(){
2868
                                                public void run(){
2869
                                                        if ( !tbtmConfig.isDisposed()){
2870
                                                                tbtmConfig.dispose();
2871
                                                                tabFolderConfig.layout();
2872
                                                        }
2873
                                                        createTabItemVolConfig();
2874
                                                        refreshConfigVolume();
2875

    
2876

    
2877
                                                        if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
2878
                                                                if (tbtmSnapshot.isDisposed()){
2879
                                                                        createTabItemSnapshot();
2880
                                                                }
2881
                                                                refreshConfigSnapshot();
2882

    
2883
                                                        }else{
2884
                                                                if ( !tbtmSnapshot.isDisposed()){
2885
                                                                        tbtmSnapshot.dispose();        
2886
                                                                }
2887

    
2888
                                                        }
2889
                                                        tabFolderConfig.setSelection(tbtmConfig);
2890
                                                        refreshIscsiSession();
2891
                                                        refreshConfigReplica();
2892
                                                        tabFolderConfig.layout();
2893
                                                        wPB.close();
2894
                                                        menuTreeZFS();
2895
                                                        tree.setMenu(treeZFSMenu);
2896

    
2897

    
2898
                                                }
2899
                                        });
2900

    
2901
                                }
2902
                        }
2903
                });
2904

    
2905
                thrGetallZvol.start();
2906
        }
2907

    
2908

    
2909
        public void menuTreeZFS(){
2910
                if (treeZFSMenu != null && !treeZFSMenu.isDisposed()){
2911
                        treeZFSMenu.dispose();
2912
                }
2913
                treeZFSMenu = new Menu(shell, SWT.POP_UP);
2914
                MenuItem refreshZFSMenu = new MenuItem(treeZFSMenu, SWT.PUSH);
2915
                refreshZFSMenu.setText("Refresh"); 
2916
                refreshZFSMenu.addListener(SWT.Selection, new Listener() {
2917
                        public void handleEvent(final Event event) {
2918

    
2919
                                tree.getSelection()[0].removeAll();
2920
                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
2921
                                TreeItem itemSelected = tree.getSelection()[0];
2922
                                while (itemSelected.getParentItem()!=null){
2923
                                        itemSelected=itemSelected.getParentItem();
2924
                                }
2925
                                itemSelected.removeAll();
2926
                                refreshTreeZFSList(itemSelected);
2927

    
2928

    
2929
                        }
2930
                });
2931

    
2932
                if ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())||
2933
                                "filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2934
                        MenuItem snapshotVolFS = new MenuItem(treeZFSMenu, SWT.PUSH);
2935
                        snapshotVolFS.setText("Launch Snapshoting"); 
2936
                        snapshotVolFS.addListener(SWT.Selection, new Listener() {
2937
                                public void handleEvent(final Event event) {
2938
                                        zfs.zfsSnapshots();
2939
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
2940

    
2941
                                        Arrays.sort(keysPropError);
2942
                                        String textBox = "";
2943
                                        for (int i = 0; i < keysPropError.length; i++) {
2944
                                                String keyPropError = keysPropError[i];
2945
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
2946
                                        }
2947
                                        if (keysPropError.length>0){
2948
                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
2949
                                                messageBoxError.setText("Warning");
2950
                                                messageBoxError.setMessage(textBox);
2951
                                                messageBoxError.open();
2952
                                        }
2953
                                }
2954
                        });        
2955
                        
2956
                        MenuItem replicaVol = new MenuItem(treeZFSMenu, SWT.PUSH);
2957
                        replicaVol.setText("Launch Replication"); 
2958
                        replicaVol.addListener(SWT.Selection, new Listener() {
2959
                                public void handleEvent(final Event event) {
2960
                                        zfs.zfsReplicas();
2961
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
2962

    
2963
                                        Arrays.sort(keysPropError);
2964
                                        String textBox = "";
2965
                                        for (int i = 0; i < keysPropError.length; i++) {
2966
                                                String keyPropError = keysPropError[i];
2967
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
2968
                                        }
2969
                                        if (keysPropError.length>0){
2970
                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
2971
                                                messageBoxError.setText("Warning");
2972
                                                messageBoxError.setMessage(textBox);
2973
                                                messageBoxError.open();
2974
                                        }
2975
                                }
2976
                        });        
2977
                }
2978

    
2979
                if ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())||
2980
                                "filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())||
2981
                                "snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2982

    
2983
                        MenuItem removeVolFS = new MenuItem(treeZFSMenu, SWT.PUSH);
2984
                        removeVolFS.setText("Remove "+zfs.getZvol().zProperties.get("name").getValue()); 
2985
                        removeVolFS.addListener(SWT.Selection, new Listener() {
2986
                                public void handleEvent(final Event event) {
2987
                                        destroyVolFS();
2988
                                }
2989
                        });
2990
                }
2991
                if("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2992
                        MenuItem cloneSnapshpt = new MenuItem(treeZFSMenu, SWT.PUSH);
2993
                        cloneSnapshpt.setText("Clone "+zfs.getZvol().zProperties.get("name").getValue()); 
2994
                        cloneSnapshpt.addListener(SWT.Selection, new Listener() {
2995
                                public void handleEvent(final Event event) {
2996
                                        zfs.zfsClone();
2997
                                        if ( zfs.getError().size()>0){
2998

    
2999
                                        }else{
3000
                                                int indRoot=0;
3001
                                                int indItem=0;
3002
                                                if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
3003
                                                        infoUsedSize=zfs.getZvol().zProperties.get("usedbydataset").getValue()+"/"+zfs.getZvol().zProperties.get("available").getValue();
3004
                                                }else{
3005
                                                        infoUsedSize=zfs.getZvol().zProperties.get("used").getValue()+" / "+zfs.getZvol().zProperties.get("volsize").getValue();
3006
                                                }
3007
                                                for (int indT=0;indT<tree.getItemCount();indT++){
3008
                                                        if (tree.getItem(indT).getData().toString().equals(zfs.getZserver().zProperties.get("serverIP").getValue())){
3009
                                                                for (int indTreeVolFS=0;indTreeVolFS<tree.getItem(indT).getItemCount();indTreeVolFS++){
3010
                                                                        if (tree.getItem(indT).getItem(indTreeVolFS).getData().toString().compareTo(zfs.getZvol().zProperties.get("name").getValue()) >0){
3011
                                                                                if (zfs.getError().size()>0){
3012
                                                                                        updateItemTreeZfsList(false,zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3013
                                                                                }else{
3014
                                                                                        updateItemTreeZfsList(true, zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3015
                                                                                }
3016
                                                                                indRoot=indT;
3017
                                                                                indItem=indTreeVolFS;
3018
                                                                                break;
3019
                                                                        }
3020
                                                                }
3021
                                                                if ( indItem==0){
3022
                                                                        int indTreeVolFS=tree.getItem(indT).getItemCount();
3023
                                                                        if (zfs.getError().size()>0){
3024
                                                                                updateItemTreeZfsList(false,zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3025
                                                                        }else{
3026
                                                                                updateItemTreeZfsList(true,zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3027
                                                                        }
3028
                                                                        indRoot=indT;
3029
                                                                        indItem=indTreeVolFS;
3030
                                                                }
3031
                                                                tree.layout();
3032
                                                        }
3033
                                                }
3034
                                        }
3035
                                }
3036
                        });
3037
                }
3038

    
3039
        }
3040

    
3041
        public void destroyVolFS(){
3042
                if ( !"".equals(zfs.getZvol().zProperties.get("name").getValue())){
3043
                        MessageBox messageBoxConfirm = new MessageBox(shell, SWT.YES|SWT.NO);
3044
                        messageBoxConfirm.setText("Warning");
3045
                        String textBoxConfirm="Remove : "+zfs.getZvol().zProperties.get("name").getValue()+" ?";
3046
                        messageBoxConfirm.setMessage(textBoxConfirm);
3047
                        int answerIDConfirm= messageBoxConfirm.open();
3048
                        if (answerIDConfirm == SWT.YES){
3049
                                if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
3050
                                        if ("yes".equals(zfs.getZvol().zProperties.get("mounted").getValue()) ){
3051
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.YES|SWT.NO);
3052
                                                messageBoxInfo.setText("Warning");
3053
                                                String textBox=zfs.getZvol().zProperties.get("name").getValue()+" is mounted\n Do you want umount it ?";
3054
                                                messageBoxInfo.setMessage(textBox);
3055
                                                int answerID= messageBoxInfo.open();
3056
                                                if (answerID == SWT.YES){
3057
                                                        zfs.zfsUmountFS();
3058
                                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
3059
                                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
3060
                                                        Arrays.sort(keysPropError);
3061
                                                        textBox = "";
3062
                                                        for (int i = 0; i < keysPropError.length; i++) {
3063
                                                                String keyPropError = keysPropError[i];
3064
                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3065
                                                        }
3066
                                                        if (keysPropError.length>0){
3067
                                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3068
                                                                messageBoxError.setText("Warning");
3069
                                                                messageBoxError.setMessage(textBox);
3070
                                                                messageBoxError.open();
3071
                                                        }else{
3072
                                                                zfs.zfsDestroyVolFS();
3073
                                                                keysPropError = zfs.getError().keySet().toArray(new String[0]);
3074

    
3075
                                                                Arrays.sort(keysPropError);
3076
                                                                textBox = "";
3077
                                                                for (int i = 0; i < keysPropError.length; i++) {
3078
                                                                        String keyPropError = keysPropError[i];
3079
                                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3080
                                                                }
3081
                                                                if (keysPropError.length>0){
3082
                                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3083
                                                                        messageBoxError.setText("Warning");
3084
                                                                        messageBoxError.setMessage(textBox);
3085
                                                                        messageBoxError.open();
3086
                                                                }else{
3087
                                                                        tree.getSelection()[0].clearAll(true);
3088
                                                                        tree.getSelection()[0].dispose();
3089
                                                                        tree.layout();
3090
                                                                        zfs.setZvol();
3091
                                                                        if ( !tbtmConfig.isDisposed()){
3092
                                                                                tbtmConfig.dispose();
3093
                                                                                tabFolderConfig.layout();
3094
                                                                        }
3095
                                                                        createTabItemVolConfig();
3096
                                                                        refreshConfigVolume();
3097
                                                                        tabFolderConfig.layout();
3098

    
3099
                                                                }
3100
                                                        }
3101
                                                }
3102
                                        }else{
3103
                                                zfs.zfsDestroyVolFS();
3104
                                                String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
3105

    
3106
                                                Arrays.sort(keysPropError);
3107
                                                String textBox = "";
3108
                                                for (int i = 0; i < keysPropError.length; i++) {
3109
                                                        String keyPropError = keysPropError[i];
3110
                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3111
                                                }
3112
                                                if (keysPropError.length>0){
3113
                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3114
                                                        messageBoxError.setText("Warning");
3115
                                                        messageBoxError.setMessage(textBox);
3116
                                                        messageBoxError.open();
3117
                                                }else{
3118
                                                        tree.getSelection()[0].clearAll(true);
3119
                                                        tree.getSelection()[0].dispose();
3120
                                                        tree.layout();
3121
                                                        zfs.setZvol();
3122
                                                        if ( !tbtmConfig.isDisposed()){
3123
                                                                tbtmConfig.dispose();
3124
                                                                tabFolderConfig.layout();
3125
                                                        }
3126
                                                        createTabItemVolConfig();
3127
                                                        refreshConfigVolume();
3128
                                                        tabFolderConfig.layout();
3129

    
3130
                                                        if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
3131
                                                                //refreshInfoSnapshot();
3132
                                                                refreshConfigSnapshot();
3133
                                                        }
3134
                                                        tabFolderConfig.setSelection(tbtmConfig);
3135
                                                        refreshIscsiSession();
3136
                                                }
3137
                                        }
3138
                                }else{
3139
                                        if ( "volume".equals(zfs.getZvol().zProperties.get("type").getValue())){
3140
                                                zfs.zfsDelIscsi();
3141
                                                String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
3142

    
3143
                                                Arrays.sort(keysPropError);
3144
                                                String textBox = "";
3145
                                                for (int i = 0; i < keysPropError.length; i++) {
3146
                                                        String keyPropError = keysPropError[i];
3147
                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3148
                                                }
3149
                                                if (keysPropError.length>0){
3150
                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3151
                                                        messageBoxError.setText("Warning");
3152
                                                        messageBoxError.setMessage(textBox);
3153
                                                        messageBoxError.open();
3154
                                                }else{
3155
                                                        zfs.zfsDestroyVolFS();
3156
                                                        keysPropError = zfs.getError().keySet().toArray(new String[0]);
3157

    
3158
                                                        Arrays.sort(keysPropError);
3159
                                                        textBox = "";
3160
                                                        for (int i = 0; i < keysPropError.length; i++) {
3161
                                                                String keyPropError = keysPropError[i];
3162
                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3163
                                                        }
3164
                                                        if (keysPropError.length>0){
3165
                                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3166
                                                                messageBoxError.setText("Warning");
3167
                                                                messageBoxError.setMessage(textBox);
3168
                                                                messageBoxError.open();
3169
                                                        }else{
3170
                                                                zfs.zfsDisableSnapshots();
3171
                                                                tree.getSelection()[0].clearAll(true);
3172
                                                                tree.getSelection()[0].dispose();
3173
                                                                tree.layout();
3174
                                                                zfs.setZvol();
3175
                                                                if ( !tbtmConfig.isDisposed()){
3176
                                                                        tbtmConfig.dispose();
3177
                                                                        tabFolderConfig.layout();
3178
                                                                }
3179
                                                                createTabItemVolConfig();
3180
                                                                refreshConfigVolume();
3181
                                                                tabFolderConfig.layout();
3182

    
3183
                                                                if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
3184
                                                                        refreshConfigSnapshot();
3185
                                                                }
3186
                                                                tabFolderConfig.setSelection(tbtmConfig);
3187
                                                                refreshIscsiSession();
3188
                                                        }
3189
                                                }
3190
                                        }else{
3191
                                                if ( "snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
3192
                                                        zfs.zfsDelIscsi();
3193
                                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
3194

    
3195
                                                        Arrays.sort(keysPropError);
3196
                                                        String textBox = "";
3197
                                                        for (int i = 0; i < keysPropError.length; i++) {
3198
                                                                String keyPropError = keysPropError[i];
3199
                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3200
                                                        }
3201
                                                        if (keysPropError.length>0){
3202
                                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3203
                                                                messageBoxError.setText("Warning");
3204
                                                                messageBoxError.setMessage(textBox);
3205
                                                                messageBoxError.open();
3206
                                                        }else{
3207
                                                                zfs.zfsDestroyVolFS();
3208
                                                                keysPropError = zfs.getError().keySet().toArray(new String[0]);
3209

    
3210
                                                                Arrays.sort(keysPropError);
3211
                                                                textBox = "";
3212
                                                                for (int i = 0; i < keysPropError.length; i++) {
3213
                                                                        String keyPropError = keysPropError[i];
3214
                                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3215
                                                                }
3216
                                                                if (keysPropError.length>0){
3217
                                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3218
                                                                        messageBoxError.setText("Warning");
3219
                                                                        messageBoxError.setMessage(textBox);
3220
                                                                        messageBoxError.open();
3221
                                                                }else{
3222
                                                                        zfs.zfsDisableSnapshots();
3223
                                                                        tree.getSelection()[0].clearAll(true);
3224
                                                                        tree.getSelection()[0].dispose();
3225
                                                                        tree.layout();
3226
                                                                        zfs.setZvol();
3227
                                                                        if ( !tbtmConfig.isDisposed()){
3228
                                                                                tbtmConfig.dispose();
3229
                                                                                tabFolderConfig.layout();
3230
                                                                        }
3231
                                                                        createTabItemVolConfig();
3232
                                                                        refreshConfigVolume();
3233
                                                                        tabFolderConfig.layout();
3234

    
3235
                                                                        if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
3236
                                                                                refreshConfigSnapshot();
3237
                                                                        }
3238
                                                                        tabFolderConfig.setSelection(tbtmConfig);
3239
                                                                        refreshIscsiSession();
3240
                                                                }
3241
                                                        }
3242
                                                }
3243

    
3244

    
3245
                                        }
3246

    
3247
                                }        
3248
                        }
3249

    
3250

    
3251
                }
3252
        }
3253

    
3254

    
3255

    
3256
}