Statistiques
| Révision :

root / src / gZFS / gui.java @ 24

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

1
package gZFS;
2

    
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.Collections;
6
import java.util.Date;
7
import java.util.Hashtable;
8
import java.util.List;
9

    
10
import org.apache.log4j.Level;
11
import org.apache.log4j.Logger;
12
import org.eclipse.jface.layout.TreeColumnLayout;
13
import org.eclipse.swt.SWT;
14
import org.eclipse.swt.custom.ScrolledComposite;
15
import org.eclipse.swt.graphics.Color;
16
import org.eclipse.swt.graphics.Font;
17
import org.eclipse.swt.graphics.Image;
18
import org.eclipse.swt.layout.FillLayout;
19
import org.eclipse.swt.layout.GridData;
20
import org.eclipse.swt.layout.GridLayout;
21
import org.eclipse.swt.widgets.Button;
22
import org.eclipse.swt.widgets.Combo;
23
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.Display;
25
import org.eclipse.swt.widgets.Event;
26
import org.eclipse.swt.widgets.ExpandBar;
27
import org.eclipse.swt.widgets.ExpandItem;
28
import org.eclipse.swt.widgets.Group;
29
import org.eclipse.swt.widgets.Label;
30
import org.eclipse.swt.widgets.Listener;
31
import org.eclipse.swt.widgets.Menu;
32
import org.eclipse.swt.widgets.MenuItem;
33
import org.eclipse.swt.widgets.MessageBox;
34
import org.eclipse.swt.widgets.ProgressBar;
35
import org.eclipse.swt.widgets.Shell;
36
import org.eclipse.swt.widgets.TabFolder;
37
import org.eclipse.swt.widgets.TabItem;
38
import org.eclipse.swt.widgets.Table;
39
import org.eclipse.swt.widgets.TableColumn;
40
import org.eclipse.swt.widgets.TableItem;
41
import org.eclipse.swt.widgets.Text;
42
import org.eclipse.swt.widgets.Tree;
43
import org.eclipse.swt.widgets.TreeItem;
44
import org.eclipse.wb.swt.SWTResourceManager;
45
import org.jfree.chart.JFreeChart;
46
import org.jfree.data.general.PieDataset;
47
import org.jfree. experimental.chart.swt.ChartComposite;
48

    
49
import com.ibm.icu.math.BigDecimal;
50

    
51
public class gui {
52

    
53
        private Logger log = Logger.getLogger(getClass().getPackage().getName()+" "+getClass().getCanonicalName());
54
        private Composite compositeConfig;
55
        private Composite compositeZpoolConfig;
56
        private Composite compositeTabVolConfig;
57
        private Composite compositeCreateVolFS;
58
        private Composite compositeIscsi;
59
        private Composite compositeSnapshot;
60
        private Composite compositeReplica;
61
        private Composite compositeWidgetCreateVolFS;
62
        private Composite compositeWidgetDisks;
63
        private Composite compositeDisks;
64

    
65

    
66
        private Group groupCreateVolFS;
67
        private Group groupActiveIscsi;
68
        private Group groupDisks;
69
        private ScrolledComposite scrolledCreateVol;
70
        private ScrolledComposite scrolledDisks;
71
        private ChartComposite chartVolumeComposite = null;
72
        private ChartComposite chartZpoolProvionedComposite = null;
73
        private ChartComposite chartZpoolUsedComposite = null;
74
        private GridData gridDataChart;
75

    
76
        protected Shell shell;
77
        private zfs zfs = new zfs();
78
        private zfs zsnap = new zfs();
79
        private guiTrt guiTrt = new guiTrt();
80
        private Hashtable<String,Float> dataCharset = new Hashtable<String, Float>();
81

    
82
        private List<Object> zfsList;
83
        private String keyProp;
84
        private List<Label> labelsField= new ArrayList<Label>();
85
        private List<Text> textsField= new ArrayList<Text>();
86
        private List<Combo> combosField= new ArrayList<Combo>();
87

    
88
        private List<Label> labelsFieldServer= new ArrayList<Label>();
89
        private List<Text> textsFieldServer= new ArrayList<Text>();
90
        private List<Combo> combosFieldServer= new ArrayList<Combo>();
91

    
92
        private List<Label> labelsFieldPool= new ArrayList<Label>();
93
        private List<Text> textsFieldPool = new ArrayList<Text>();
94
        private List<Combo> combosFieldPool = new ArrayList<Combo>();
95

    
96
        private Combo comboType4CreateVolFS ;
97
        private Combo comboZpool4CreateVolFS;
98

    
99
        private List<Label> labelsFieldCreateVol= new ArrayList<Label>();
100
        private List<Text> textsFieldCreateVol = new ArrayList<Text>();
101
        private List<Combo> combosFieldCreateVol = new ArrayList<Combo>();
102

    
103
        private List<Label> labelsFieldCreateIscsi= new ArrayList<Label>();
104
        private List<Text> textsFieldCreateIscsi = new ArrayList<Text>();
105
        private List<Combo> combosFieldCreateIscsi = new ArrayList<Combo>();
106

    
107
        private List<Label> labelsFieldAddIscsi= new ArrayList<Label>();
108
        private List<Text> textsFieldAddIscsi = new ArrayList<Text>();
109
        private List<Combo> combosFieldAddIscsi = new ArrayList<Combo>();
110
        private List<TableColumn> tablecolumnsFieldAddIscsi = new ArrayList<TableColumn>();
111
        private Table tableIscsiSession;
112

    
113

    
114
        private List<Label> labelsFieldSnapshots= new ArrayList<Label>();
115
        private List<Text> textsFieldSnapshots = new ArrayList<Text>();
116
        private List<Label> labelsFieldSnapshotsValue= new ArrayList<Label>();
117
        private List< org.eclipse.swt.widgets.List > listsFieldSnaphots = new ArrayList<org.eclipse.swt.widgets.List >();
118

    
119

    
120
        private List<Label> labelsFieldReplica= new ArrayList<Label>();
121
        private List<Text> textsFieldReplica = new ArrayList<Text>();
122
        private List<Label> labelsFieldReplicaValue= new ArrayList<Label>();
123
        private List< org.eclipse.swt.widgets.List > listsFieldReplica = new ArrayList<org.eclipse.swt.widgets.List >();
124
        private List<Combo> combosFieldReplica = new ArrayList<Combo>();
125

    
126
        private List<Label> labelsFieldZRaid= new ArrayList<Label>();
127
        private List<Label> labelsFieldDisks= new ArrayList<Label>();
128

    
129
        private Image imageStorage= SWTResourceManager.getImage(gui.class, "/images/storage-32px.png");
130
        private Image imageServerOnline = SWTResourceManager.getImage(gui.class, "/images/enable-server-icon-32px.png");
131
        private Image imageServerOffline = SWTResourceManager.getImage(gui.class, "/images/off-server-32px.png");
132
        private Image imageStorageOnline = SWTResourceManager.getImage(gui.class, "/images/storage-32px.png");
133
        private Image imageStorageOffline = SWTResourceManager.getImage(gui.class, "/images/storage-offline-32px.png");
134
        private Image imageFSOnline = SWTResourceManager.getImage(gui.class, "/images/zfs-fs-online-32px.png");
135
        private Image imageFSOffline = SWTResourceManager.getImage(gui.class, "/images/zfs-fs-offline-32px.png");
136
        private Image imageStorageServer = SWTResourceManager.getImage(gui.class, "/images/storage-server-32px.png");
137
        private Image imageSnapshotOnline = SWTResourceManager.getImage(gui.class, "/images/snapshot-32px.png");
138
        private Image imageSnapshotOffline = SWTResourceManager.getImage(gui.class, "/images/snapshot-offline-32px.png");
139
        private Image imageHardDisk = SWTResourceManager.getImage(gui.class, "/images/hard-disk-72px.png");
140
        private Image imageHardDiskOffline = SWTResourceManager.getImage(gui.class, "/images/hard-disk-offline-72px.png");
141
        private Image imageHardDiskOnline = SWTResourceManager.getImage(gui.class, "/images/hard-disk-online-72px.png");
142

    
143
        private Color labelTitleBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT);
144
        private Color labelFieldBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
145
        private Color textFieldBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
146
        private Color groupBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
147
        private Color compositeBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
148
        private Color tabFolderBackgroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT);
149
        private Color tabFolderForegroundColor = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
150

    
151
        private Tree tree;
152
        private Tree treeZpool;
153
        private Tree treeSnapshots;
154
        private TabFolder tabFolderNav;
155
        private TabFolder tabFolderConfig;
156
        private TabItem tbtmConfig;
157
        private TabItem tbtmZpoolConfig;
158
        private TabItem tbtmSettings;
159
        private TabItem tbtmCreateVolFS;
160
        private TabItem tbtmIscsi;
161
        private TabItem tbtmSnapshot;
162
        private TabItem tbtmReplica;
163
        private TabItem tbtmDisks;
164

    
165
        private Font fontTitle ;
166
        private Font fontSubTitle ;
167
        private Font fontWidget;
168
        private List<Object> zpoolList;
169
        private Button btnConnectServer;
170
        private Button btnCreateZfsVolFS;
171
        private Thread thrConnect;
172
        private Thread thrCheck;
173
        private Thread thrCreateZFSVol;
174
        private Thread thrZpool;
175
        private Thread thrGetallZvol;
176
        private Thread thrZfsList;
177
        private guiProgress wPB;
178

    
179

    
180
        private String strItemServer ="";
181
        private String strItemZvolFS ="";
182
        private int countItem=0;
183
        private String infoUsedSize="";
184

    
185

    
186
        Menu treeZFSMenu;
187

    
188
        /**
189
         * Launch the application.
190
         * @param args
191
         */
192
        public static void main(String[] args) {
193
                try {
194
                        gui window = new gui();
195
                        window.open();
196

    
197
                } catch (Exception e) {
198
                        e.printStackTrace();
199
                }
200
        }
201

    
202
        /**
203
         * Open the window.
204
         */
205
        public void open() {
206
                log.setLevel((Level) Level.DEBUG);
207
                Display display = Display.getDefault();
208

    
209
                createContents(shell);
210

    
211
                shell.open();
212
                shell.layout();
213
                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
214
                shell.addListener(SWT.Close, new Listener() {
215
                        public void handleEvent(final Event event) {
216
                                zfs.disconnectServer();
217
                        }
218
                });
219
                while (!shell.isDisposed()) {
220
                        if (!display.readAndDispatch()) {
221

    
222
                                display.sleep();        
223
                        }
224
                }
225
        }
226

    
227
        /**
228
         * Create contents of the window.
229
         */
230
        protected void createContents(Composite parent) {
231
                shell = new Shell();
232
                shell.setSize(SWT.MAX, SWT.MAX);
233
                shell.setText("gZFS : a GUI for ZFS");
234
                //shell.layout();
235
                shell.setLayout(new FillLayout(SWT.HORIZONTAL));
236

    
237
                fontTitle = new Font(shell.getDisplay(), "Calibri", 14, SWT.BOLD);
238
                fontSubTitle = new Font(shell.getDisplay(), "Calibri", 10, SWT.BOLD);
239
                fontWidget = new Font(shell.getDisplay(), "Calibri", 10, SWT.NONE);
240
                tabFolderNav = new TabFolder(shell, SWT.UP);
241
                tabFolderNav.setBounds(0, 0, 200, 200);
242
                tabFolderNav.setBackground(tabFolderBackgroundColor);
243
                tabFolderNav.setForeground(tabFolderForegroundColor);
244

    
245
                /******************************************************************************
246
                 * CREATE TAB : GENERAL
247
                 ******************************************************************************/
248

    
249
                TabItem tbtmGen = new TabItem(tabFolderNav, SWT.NONE);
250
                //tbtmGen.setImage(SWTResourceManager.getImage(gui.class, "/images/accept-database-icon.png"));
251
                tbtmGen.setText("General");
252

    
253

    
254
                Composite compositeTabNavGen = new Composite(tabFolderNav, SWT.NONE);
255
                tbtmGen.setControl(compositeTabNavGen);
256
                GridLayout gridLayout = new GridLayout();
257
                compositeTabNavGen.setLayout(gridLayout);
258
                compositeTabNavGen.setBackground(tabFolderBackgroundColor);
259

    
260
                treeZpool = new Tree(compositeTabNavGen, SWT.BORDER|SWT.V_SCROLL);
261
                GridData gd_treeZpool = new GridData(GridData.FILL,GridData.FILL, true, true);
262
                gd_treeZpool.heightHint = 50;
263
                treeZpool.setLayoutData(gd_treeZpool);
264
                treeZpool.addListener(SWT.Selection, new Listener() {
265
                        public void handleEvent(final Event event) {
266
                                //log.debug(treeZpool.getSelection()[0].getText());
267
                                TreeItem root = (TreeItem) event.item;
268

    
269
                                if ( root.getParentItem() != null){
270
                                        zfs.getServer(root.getParentItem().getData().toString());
271
                                        zfs.zpoolGetAll(root.getData().toString());
272
                                        refreshInfoZpool();
273
                                        refreshDisks();
274

    
275
                                }else{
276
                                        zfs.getServer(root.getData().toString());
277
                                        refreshInfoServer();
278

    
279
                                }
280
                        }
281
                }
282
                                );
283
                //Init Server List in Tree
284
                refreshTreeZpoolList();
285

    
286
                Group groupServerConfig= new Group(compositeTabNavGen,SWT.NONE);
287
                groupServerConfig.setBackground(groupBackgroundColor);
288
                groupServerConfig.setLayout(new GridLayout());
289
                GridData gridDataServerConfig=new GridData(GridData.FILL_HORIZONTAL);
290
                gridDataServerConfig.heightHint=500;
291
                gridDataServerConfig.minimumHeight=500;
292
                groupServerConfig.setLayoutData(gridDataServerConfig);
293

    
294
                ScrolledComposite scrolledServerConfig=new ScrolledComposite(groupServerConfig,SWT.V_SCROLL);
295
                scrolledServerConfig.setLayoutData(new GridData(GridData.FILL_BOTH));
296
                Composite compositeWidget=new Composite(scrolledServerConfig,SWT.NONE);
297
                compositeWidget.setBackground(compositeBackgroundColor);
298
                GridLayout gridLayoutWidget = new GridLayout();
299
                gridLayoutWidget.numColumns =2;
300
                compositeWidget.setLayout(gridLayoutWidget);
301

    
302

    
303
                GridData gridDataTitleServerConfig = new GridData(GridData.FILL, GridData.CENTER, true, false);
304
                gridDataTitleServerConfig.horizontalSpan = 2;
305
                Label lblTitleServerConfig = new Label(compositeWidget, SWT.CENTER|SWT.BORDER);
306
                lblTitleServerConfig.setLayoutData(gridDataTitleServerConfig);
307
                lblTitleServerConfig.setFont(fontTitle);
308
                lblTitleServerConfig.setBackground(labelTitleBackgroundColor);
309
                lblTitleServerConfig.setText("Server Configuration");
310

    
311

    
312
                String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
313
                Arrays.sort(keysProp);
314
                labelsFieldServer.clear();
315
                textsFieldServer.clear();        
316
                combosFieldServer.clear();
317
                for (int i = 0; i < keysProp.length; i++) {
318
                        keyProp = keysProp[i];
319

    
320

    
321

    
322
                        if ( "freeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())){
323
                                Label lbl = new Label(compositeWidget, SWT.NONE);
324
                                lbl.setFont(fontWidget);
325
                                lbl.setBackground(labelFieldBackgroundColor);
326
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
327
                                lbl.setText(zfs.getZserver().zProperties.get(keyProp).getLabelProperty());
328
                                if (keyProp.equals("userPasswd")){
329
                                        textsFieldServer.add(new Text(compositeWidget,  SWT.PASSWORD | SWT.BORDER));
330
                                }else{
331
                                        textsFieldServer.add(new Text(compositeWidget, SWT.WRAP|SWT.BORDER));        
332

    
333
                                }
334

    
335
                                textsFieldServer.get(textsFieldServer.size()-1).setBackground(textFieldBackgroundColor);
336
                                textsFieldServer.get(textsFieldServer.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
337
                                //textsField.get(textsField.size()-1).setText(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
338
                                textsFieldServer.get(textsFieldServer.size()-1).setData(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
339

    
340
                        }else{
341

    
342
                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())){
343
                                        Label lbl = new Label(compositeWidget, SWT.NONE);
344
                                        lbl.setFont(fontWidget);
345
                                        lbl.setBackground(labelFieldBackgroundColor);
346
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
347
                                        lbl.setText(zfs.getZserver().zProperties.get(keyProp).getLabelProperty());
348

    
349
                                        combosFieldServer.add(new Combo(compositeWidget, SWT.NONE));
350
                                        combosFieldServer.get(combosFieldServer.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
351
                                        combosFieldServer.get(combosFieldServer.size()-1).setData(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
352
                                        //combosField.get(combosField.size()-1).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
353
                                        String[] keysPermitValue = (String[]) zfs.getZserver().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
354
                                        for (int cpt=0;cpt <zfs.getZserver().zProperties.get(keyProp).getPermitValue().size();cpt++){
355
                                                String keyPermiValue = keysPermitValue[cpt];
356
                                                combosFieldServer.get(combosFieldServer.size()-1).add(zfs.getZserver().zProperties.get(keyProp).getPermitValue().get(keyPermiValue).toString());
357
                                        }
358
                                }
359
                        }
360

    
361
                }
362

    
363
                Button btnAddServer = new Button(compositeWidget, SWT.NONE);
364
                btnAddServer.setText("Add ZFS Server");
365
                btnAddServer.addListener(SWT.Selection, new Listener() {
366
                        public void handleEvent(final Event event) {
367

    
368
                                String[] keysProp = zfs.getZserver().zProperties.keySet().toArray(new String[0]);
369
                                //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
370
                                Arrays.sort(keysProp);
371

    
372
                                for (int i = 0; i < keysProp.length; i++) {
373
                                        keyProp = keysProp[i];
374
                                        for (int cpt=0;cpt<textsFieldServer.size();cpt++){
375
                                                if (keyProp.equalsIgnoreCase(textsFieldServer.get(cpt).getData().toString())) {
376
                                                        log.debug(keyProp+" "+textsFieldServer.get(cpt).getText());
377
                                                        if (keyProp.equals("userPasswd")){
378
                                                                zfs.getZserver().zProperties.get(keyProp).setValue("");
379
                                                        }else{
380
                                                                zfs.getZserver().zProperties.get(keyProp).setValue(textsFieldServer.get(cpt).getText());        
381
                                                        }
382

    
383
                                                }
384
                                        }
385
                                }
386
                                zfs.addServer();
387

    
388
                                boolean checkExistInTree=false;
389
                                for (int ind=0;ind<treeZpool.getItemCount();ind++){
390
                                        log.debug("refreshTreeZpoolList "+treeZpool.getItem(ind).getData().toString()+" "+zfs.getZserver().zProperties.get("serverIP").getValue());
391
                                        if ( treeZpool.getItem(ind).getData().toString().equalsIgnoreCase(zfs.getZserver().zProperties.get("serverIP").getValue())){
392
                                                checkExistInTree=true;
393
                                        }
394
                                }
395
                                if ( ! checkExistInTree ){
396
                                        TreeItem rootTreeZvolFS = new TreeItem(treeZpool,SWT.None);
397
                                        rootTreeZvolFS.setText(zfs.getZserver().zProperties.get("serverIP").getValue());
398
                                        rootTreeZvolFS.setData(zfs.getZserver().zProperties.get("serverIP").getValue());
399
                                        rootTreeZvolFS.setImage(imageServerOffline);
400
                                }
401
                        }        
402
                });
403

    
404
                Button btnRemoveServer = new Button(compositeWidget, SWT.NONE);
405
                btnRemoveServer.setText("Remove ZFS Server");
406
                btnRemoveServer.addListener(SWT.Selection, new Listener() {
407
                        public void handleEvent(final Event event) {
408
                                if ( treeZpool.getParentItem() == null){
409
                                        if ( treeZpool.getSelectionCount() !=0){
410

    
411
                                                zfs.getZserver().zProperties.get("serverIP").setValue(treeZpool.getSelection()[0].getData().toString());
412
                                                for (int cptTree=0;cptTree<tree.getItemCount();cptTree++){
413
                                                        if (tree.getItem(cptTree).getData().equals(zfs.getZserver().zProperties.get("serverIP").getValue())){
414
                                                                tree.getItem(cptTree).removeAll();
415
                                                                tree.getItem(cptTree).dispose();
416
                                                        }
417
                                                }
418
                                                zfs.removeServer();                
419
                                                treeZpool.getSelection()[0].dispose();
420

    
421
                                        }
422
                                }
423

    
424
                        }
425
                });
426

    
427
                btnConnectServer = new Button(compositeWidget,SWT.NONE);
428
                GridData gridDataBtnServerConfig = new GridData(GridData.FILL, GridData.CENTER, true, false);
429
                gridDataBtnServerConfig.horizontalSpan = 2;
430
                btnConnectServer.setLayoutData(gridDataBtnServerConfig);
431
                btnConnectServer.setText("Connect");
432
                btnConnectServer.addListener(SWT.Selection, new Listener() {
433
                        public void handleEvent(final Event event) {
434

    
435

    
436

    
437
                                if (treeZpool.getSelectionCount() !=0 ){
438
                                        final TreeItem root = (TreeItem) treeZpool.getSelection()[0];
439
                                        if ( root.getParentItem() ==null ){
440

    
441
                                                String[] keysProp = zfs.getZserver().zProperties.keySet().toArray(new String[0]);
442
                                                //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
443
                                                Arrays.sort(keysProp);
444

    
445
                                                for (int i = 0; i < keysProp.length; i++) {
446
                                                        keyProp = keysProp[i];
447
                                                        for (int cpt=0;cpt<textsFieldServer.size();cpt++){
448
                                                                if (keyProp.equalsIgnoreCase(textsFieldServer.get(cpt).getData().toString())) {
449
                                                                        zfs.getZserver().zProperties.get(keyProp).setValue(textsFieldServer.get(cpt).getText());
450
                                                                }
451
                                                        }
452
                                                }
453
                                                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())){
454

    
455
                                                        thrCheck = new Thread(new Runnable(){
456
                                                                public void run() {
457
                                                                        Display.getDefault().syncExec(new Runnable() {
458
                                                                                public void run() {
459
                                                                                        if (wPB.s.isDisposed()){
460
                                                                                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
461
                                                                                                wPB.open();
462
                                                                                        }else{
463
                                                                                                wPB.open();
464
                                                                                        }
465
                                                                                        btnConnectServer.setEnabled(false);
466
                                                                                        tabFolderNav.setEnabled(false);
467
                                                                                        refreshDisks();
468
                                                                                }
469
                                                                        });
470
                                                                        zfs.checkBinEnv();
471
                                                                        Display.getDefault().syncExec(new Runnable(){
472
                                                                                public void run(){
473
                                                                                        log.debug(zfs.getError());
474

    
475
                                                                                        log.debug(zfs.getZserver().zProperties.get("serverIP").getValue()+" connected");
476
                                                                                        if ( zfs.getError().size() ==0){
477
                                                                                                zsnap = zfs;
478

    
479
                                                                                                refreshTreeZpoolList();
480

    
481

    
482
                                                                                        }else{
483
                                                                                                String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
484
                                                                                                //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
485
                                                                                                Arrays.sort(keysPropError);
486
                                                                                                String textBox = "";
487
                                                                                                for (int i = 0; i < keysPropError.length; i++) {
488
                                                                                                        String keyPropError = keysPropError[i];
489
                                                                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
490
                                                                                                }
491

    
492
                                                                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
493
                                                                                                messageBoxInfo.setText("Warning");
494
                                                                                                messageBoxInfo.setMessage(textBox);
495
                                                                                                messageBoxInfo.open();
496
                                                                                                btnConnectServer.setEnabled(true);
497
                                                                                                tabFolderNav.setEnabled(true);
498
                                                                                                wPB.close();
499

    
500
                                                                                        }
501

    
502
                                                                                }
503
                                                                        });
504

    
505
                                                                }
506
                                                        });
507
                                                        thrCheck.start();
508
                                                        wPB.close();
509

    
510

    
511
                                                }        
512
                                        }
513

    
514
                                }
515

    
516
                        }
517
                });
518

    
519
                for (int i = 0; i < keysProp.length; i++) {
520
                        keyProp = keysProp[i];
521
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
522
                                Label lbl = new Label(compositeWidget, SWT.NONE);
523
                                lbl.setFont(fontWidget);
524
                                lbl.setBackground(labelFieldBackgroundColor);
525
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
526
                                lbl.setText(zfs.getZserver().zProperties.get(keyProp).getLabelProperty());
527

    
528
                                labelsFieldServer.add(new Label(compositeWidget, SWT.NONE));
529
                                labelsFieldServer.get(labelsFieldServer.size()-1).setBackground(labelFieldBackgroundColor);
530
                                labelsFieldServer.get(labelsFieldServer.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
531
                                //labelsField.get(labelsField.size()-1).setText(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
532
                                labelsFieldServer.get(labelsFieldServer.size()-1).setData(zfs.getZserver().zProperties.get(keyProp).getNameProperty());
533
                        }
534
                }
535

    
536
                scrolledServerConfig.setContent(compositeWidget);
537
                scrolledServerConfig.setExpandVertical(true);
538
                scrolledServerConfig.setExpandHorizontal(true);
539
                scrolledServerConfig.setMinSize(compositeWidget.computeSize(SWT.DEFAULT,SWT.DEFAULT));
540

    
541
                TabItem tabItem = new TabItem(tabFolderNav, SWT.NONE);
542
                tabItem.setText("Volumes and File System");
543
                tabItem.setData("volandfs");
544

    
545
                compositeTabVolConfig = new Composite(tabFolderNav, SWT.NONE);
546
                tabItem.setControl(compositeTabVolConfig);
547
                compositeTabVolConfig.setLayout(new GridLayout());
548
                compositeTabVolConfig.setBackground(tabFolderBackgroundColor);
549
                tree = new Tree(compositeTabVolConfig, SWT.BORDER);
550
                //t.minimumHeight=100;
551
                GridData gd_tree = new GridData(GridData.FILL,GridData.FILL, true, true);
552
                gd_tree.heightHint = 500;
553
                tree.setLayoutData(gd_tree);
554

    
555

    
556
                tree.addListener(SWT.Selection, new Listener() {
557
                        public void handleEvent(final Event event) {
558

    
559
                                final TreeItem root = (TreeItem) event.item;
560
                                if ( root.getParentItem() != null){
561
                                        wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
562
                                        actionClickTree(event);
563
                                }
564
                        }
565
                });                
566

    
567

    
568
                tabFolderConfig = new TabFolder(shell, SWT.UP);
569
                tabFolderConfig.setBounds(200, 0, 200, 200);
570
                tabFolderConfig.setBackground(tabFolderBackgroundColor);
571
                tabFolderConfig.setForeground(tabFolderForegroundColor);
572
                createTabItemZpoolConfig();
573
                createTabItemCreateVol();
574
                createTabItemDisks();
575
                tabFolderNav.addListener(SWT.Selection, new Listener() {
576
                        public void handleEvent(final Event event) {
577
                                if (tabFolderNav.getSelection()[0].getText().equalsIgnoreCase("general")){
578
                                        thrZpool = new Thread(new Runnable(){
579
                                                public void run() {
580
                                                        Display.getDefault().syncExec(new Runnable() {
581
                                                                public void run() {
582
                                                                        if (wPB.s.isDisposed()){
583
                                                                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
584
                                                                                wPB.open();
585
                                                                        }else{
586
                                                                                wPB.open();
587
                                                                        }
588

    
589
                                                                }
590
                                                        });
591

    
592
                                                        Display.getDefault().syncExec(new Runnable() {
593
                                                                public void run() {
594
                                                                        if (!"".equals(zfs.getZpool().zProperties.get("name").getValue())){
595
                                                                                if (treeZpool.getSelection()[0].getParentItem() != null){
596
                                                                                        if (treeZpool.getSelectionCount()>0){
597
                                                                                                TreeItem zpoolSelect = treeZpool.getSelection()[0];
598
                                                                                                treeZpool.select(zpoolSelect);
599
                                                                                                zfs.getZserver().zProperties.get("serverIP").setValue(treeZpool.getSelection()[0].getParentItem().getData().toString());
600
                                                                                                zfs.zpoolGetAll(zfs.getZpool().zProperties.get("name").getValue());        
601
                                                                                        }        
602
                                                                                }
603

    
604
                                                                        }
605
                                                                        if ( !tbtmConfig.isDisposed()){
606
                                                                                tbtmConfig.dispose();
607
                                                                                tabFolderConfig.layout();
608
                                                                        }
609

    
610

    
611
                                                                        if ( !tbtmIscsi.isDisposed()){
612
                                                                                tbtmIscsi.dispose();
613
                                                                                tabFolderConfig.layout();
614
                                                                        }
615

    
616
                                                                        if ( !tbtmSnapshot.isDisposed()){
617
                                                                                tbtmSnapshot.dispose();
618
                                                                                tabFolderConfig.layout();
619
                                                                        }
620
                                                                        if ( !tbtmReplica.isDisposed()){
621
                                                                                tbtmReplica.dispose();
622
                                                                                tabFolderConfig.layout();
623
                                                                        }
624
                                                                        createTabItemZpoolConfig();
625
                                                                        refreshInfoZpool();
626
                                                                        compositeZpoolConfig.layout();
627
                                                                        zfs.setZvol();
628
                                                                        createTabItemCreateVol();
629
                                                                        compositeCreateVolFS.layout();
630

    
631
                                                                        createTabItemDisks();
632
                                                                        refreshDisks();
633
                                                                        compositeDisks.layout();
634

    
635
                                                                        wPB.close();
636
                                                                }
637
                                                        });
638
                                                }
639
                                        });
640
                                        thrZpool.start();        
641
                                }
642
                                if (tabFolderNav.getSelection()[0].getText().equalsIgnoreCase("Volumes and File System")){
643
                                        thrZfsList = new Thread(new Runnable(){
644
                                                public void run() {
645
                                                        Display.getDefault().syncExec(new Runnable() {
646
                                                                public void run() {
647
                                                                        if ( !tbtmZpoolConfig.isDisposed()){
648
                                                                                tbtmZpoolConfig.dispose();
649
                                                                                tabFolderConfig.layout();
650
                                                                        }
651
                                                                        if ( !tbtmCreateVolFS.isDisposed()){
652
                                                                                tbtmCreateVolFS.dispose();
653
                                                                                tabFolderConfig.layout();
654
                                                                        }
655
                                                                        if ( !tbtmDisks.isDisposed()){
656
                                                                                tbtmDisks.dispose();
657
                                                                                tabFolderConfig.layout();
658
                                                                        }
659
                                                                        //zfs.setZvol();
660
                                                                        if ( tree.getSelectionCount() >0){
661

    
662
                                                                                if (tree.getSelection()[0].getParentItem() != null){
663
                                                                                        TreeItem topRoot = tree.getSelection()[0];
664
                                                                                        while (topRoot.getParentItem() != null){
665
                                                                                                topRoot = topRoot.getParentItem();
666
                                                                                        }
667
                                                                                        TreeItem treeZfsListItem = tree.getSelection()[0];
668
                                                                                        tree.select(treeZfsListItem);
669
                                                                                        zfs.getZserver().zProperties.get("serverIP").setValue(topRoot.getText());
670
                                                                                        zfs.zfsGetAllVolume(tree.getSelection()[0].getData().toString());        
671
                                                                                }
672
                                                                        }
673
                                                                        createTabItemVolConfig();
674
                                                                        refreshConfigVolume();
675
                                                                        compositeConfig.layout();
676
                                                                        createTabItemIscsi();
677
                                                                        createTabItemSnapshot();
678
                                                                        createTabItemReplica();
679
                                                                }
680

    
681
                                                        });
682
                                                }
683
                                        });
684
                                        thrZfsList.start();
685
                                }
686
                        }
687
                });
688
                tabFolderConfig.addListener(SWT.Selection, new Listener() {
689
                        public void handleEvent(final Event event) {
690
                                if (tabFolderConfig.getSelection()[0].getText().equalsIgnoreCase("Snapshots")){
691
                                        //tabFolderConfig.getItems()[0].s
692
                                        treeSnapshots.clearAll(true);
693
                                        treeSnapshots.setItemCount(0);
694
                                        List<Object> zlistSnapshots = zfs.zfsListSnapshotsByVolFS(zfs.getZvol().zProperties.get("name").getValue());
695
                                        for (int i = 0; i < zlistSnapshots.size(); i++) {
696
                                                TreeItem root = new TreeItem(treeSnapshots, 0);
697
                                                root.setText(zlistSnapshots.get(i).toString());
698
                                                root.setData(zlistSnapshots.get(i).toString());
699
                                                new TreeItem(root, 0);
700
                                        }
701

    
702
                                }
703
                        }
704
                });
705
        }
706

    
707
        private void createTabItemSettings(){
708
                /******************************************************************************
709
                 * CREATE TAB : Settings
710
                 ******************************************************************************/
711

    
712
                tbtmSettings = new TabItem(tabFolderConfig,SWT.NONE,0);
713
                tbtmSettings.setText("Server Configuration");
714
                Composite compositeSettings = new Composite(tabFolderConfig,SWT.NONE);
715
                tbtmSettings.setControl(compositeSettings);
716
                GridLayout gridLayout = new GridLayout();
717
                compositeSettings.setLayout(gridLayout);
718

    
719
        }
720

    
721
        private void createTabItemZpoolConfig(){
722
                /******************************************************************************
723
                 * CREATE TAB : SZFS Pool Configuration
724
                 ******************************************************************************/
725

    
726
                tbtmZpoolConfig = new TabItem(tabFolderConfig,SWT.NONE,0);
727
                tbtmZpoolConfig.setText("Pool Configuration");
728
                compositeZpoolConfig = new Composite(tabFolderConfig,SWT.NONE);
729
                tbtmZpoolConfig.setControl(compositeZpoolConfig);
730
                GridLayout gridLayout = new GridLayout();
731
                gridLayout.numColumns=2;
732
                compositeZpoolConfig.setLayout(gridLayout);
733
                compositeZpoolConfig.setBackground(tabFolderBackgroundColor);
734

    
735
                Group groupZpoolConfig = new Group(compositeZpoolConfig,SWT.NONE);
736
                groupZpoolConfig.setBackground(groupBackgroundColor);
737
                groupZpoolConfig.setLayout(new GridLayout());
738
                //GridData gridDataZpoolConfig=new GridData(GridData.FILL_HORIZONTAL);
739
                GridData gridDataZpoolConfig=new GridData(SWT.FILL, SWT.FILL, true, true);
740
                //gridDataZpoolConfig.heightHint=550;
741
                //gridDataZpoolConfig.minimumHeight=550;
742
                gridDataZpoolConfig.horizontalSpan=2;
743
                groupZpoolConfig.setLayoutData(gridDataZpoolConfig);
744

    
745
                ScrolledComposite scrolledZpoolConfig=new ScrolledComposite(groupZpoolConfig,SWT.V_SCROLL);
746
                scrolledZpoolConfig.setLayoutData(new GridData(GridData.FILL_BOTH));
747
                Composite compositeWidget=new Composite(scrolledZpoolConfig,SWT.NONE);
748
                compositeWidget.setBackground(compositeBackgroundColor);
749
                GridLayout gridLayoutWidget = new GridLayout();
750
                gridLayoutWidget.numColumns =2;
751
                compositeWidget.setLayout(gridLayoutWidget);
752

    
753
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
754
                gridDataTitle.horizontalSpan = 2;
755
                Label lblTitleInfoZpool = new Label(compositeWidget, SWT.CENTER|SWT.BORDER);
756
                lblTitleInfoZpool.setLayoutData(gridDataTitle);
757
                lblTitleInfoZpool.setFont(fontTitle);
758
                lblTitleInfoZpool.setBackground(labelTitleBackgroundColor);
759
                lblTitleInfoZpool.setText("ZFS Pool Informations");
760

    
761

    
762
                String[] keysProp = (String[]) zfs.getZpool().zProperties.keySet().toArray(new String[0]);
763
                Arrays.sort(keysProp);
764
                labelsFieldPool.clear();
765
                textsFieldPool.clear();        
766
                combosFieldPool.clear();
767

    
768
                for (int i = 0; i < keysProp.length; i++) {
769
                        keyProp = keysProp[i];
770
                        Label lbl = new Label(compositeWidget, SWT.NONE);
771
                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
772
                        lbl.setText(zfs.getZpool().zProperties.get(keyProp).getLabelProperty());
773
                        lbl.setFont(fontWidget);
774
                        lbl.setBackground(labelFieldBackgroundColor);
775
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
776
                                labelsFieldPool.add(new Label(compositeWidget, SWT.NONE));
777
                                labelsFieldPool.get(labelsFieldPool.size()-1).setBackground(labelFieldBackgroundColor);
778
                                labelsFieldPool.get(labelsFieldPool.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
779
                                labelsFieldPool.get(labelsFieldPool.size()-1).setData(zfs.getZpool().zProperties.get(keyProp).getNameProperty());
780
                        }else{
781
                                if ( "freeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())){
782
                                        textsFieldPool.add(new Text(compositeWidget, SWT.WRAP|SWT.BORDER));
783
                                        textsFieldPool.get(textsFieldPool.size()-1).setBackground(textFieldBackgroundColor);
784
                                        textsFieldPool.get(textsFieldPool.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
785
                                        textsFieldPool.get(textsFieldPool.size()-1).setData(zfs.getZpool().zProperties.get(keyProp).getNameProperty());
786

    
787
                                }else{
788

    
789
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())){
790
                                                combosFieldPool.add(new Combo(compositeWidget, SWT.NONE));
791
                                                combosFieldPool.get(combosFieldPool.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
792
                                                combosFieldPool.get(combosFieldPool.size()-1).setData(zfs.getZpool().zProperties.get(keyProp).getNameProperty());
793
                                                String[] keysPermitValue = (String[])zfs.getZpool().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
794

    
795
                                                for (int cpt=0;cpt <zfs.getZpool().zProperties.get(keyProp).getPermitValue().size();cpt++){
796
                                                        String keyPermitValue = keysPermitValue[cpt];
797
                                                        combosFieldPool.get(combosFieldPool.size()-1).add(zfs.getZpool().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
798
                                                }
799
                                        }
800
                                }
801

    
802
                        }
803
                }
804

    
805

    
806
                scrolledZpoolConfig.setContent(compositeWidget);
807
                scrolledZpoolConfig.setExpandVertical(true);
808
                scrolledZpoolConfig.setExpandHorizontal(true);
809
                scrolledZpoolConfig.setMinSize(compositeWidget.computeSize(SWT.DEFAULT,SWT.DEFAULT));
810

    
811

    
812
        }
813

    
814
        private void createTabItemDisks(){
815
                /******************************************************************************
816
                 * CREATE TAB : DISKS ZFS
817
                 ******************************************************************************/
818

    
819
                tbtmDisks = new TabItem(tabFolderConfig,SWT.NONE,2);
820
                tbtmDisks.setText("Raid and Disks Configuration");
821
                compositeDisks = new Composite(tabFolderConfig,SWT.NONE);
822
                tbtmDisks.setControl(compositeDisks);
823
                GridLayout gridLayout = new GridLayout();
824
                gridLayout.numColumns=6;
825
                compositeDisks.setLayout(gridLayout);
826
                compositeDisks.setBackground(tabFolderBackgroundColor);
827

    
828

    
829

    
830

    
831

    
832

    
833
        }
834

    
835

    
836

    
837
        private void createTabItemVolConfig(){
838
                /******************************************************************************
839
                 * CREATE TAB : Config
840
                 ******************************************************************************/
841

    
842

    
843
                tbtmConfig = new TabItem(tabFolderConfig,SWT.NONE,0);
844
                tbtmConfig.setText("Configuration");
845
                compositeConfig = new Composite(tabFolderConfig, SWT.NONE);
846
                //compositeConfig.set
847
                GridData parentData = new GridData(SWT.FILL, SWT.FILL, true, true);
848
                compositeConfig.setLayoutData(parentData);
849
                tbtmConfig.setControl(compositeConfig);
850
                GridLayout gridLayout = new GridLayout();
851
                gridLayout.numColumns=2;
852
                compositeConfig.setLayout(gridLayout);
853
                compositeConfig.setBackground(tabFolderBackgroundColor);
854
                Group groupInfoVolFS=new Group(compositeConfig,SWT.NONE);
855
                groupInfoVolFS.setBackground(groupBackgroundColor);
856
                groupInfoVolFS.setLayout(new GridLayout());
857
                GridData gridData=new GridData(GridData.FILL_HORIZONTAL);
858
                gridData.heightHint=400;
859
                gridData.horizontalSpan=2;
860
                groupInfoVolFS.setLayoutData(gridData);
861

    
862
                ScrolledComposite scrolledCreateVol=new ScrolledComposite(groupInfoVolFS,SWT.V_SCROLL);
863
                scrolledCreateVol.setLayoutData(new GridData(GridData.FILL_BOTH));
864
                Composite compositeWidget=new Composite(scrolledCreateVol,SWT.NONE);
865
                compositeWidget.setBackground(compositeBackgroundColor);
866
                GridLayout gridLayoutWidget = new GridLayout();
867
                gridLayoutWidget.numColumns =2;
868
                compositeWidget.setLayout(gridLayoutWidget);
869

    
870
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
871
                gridDataTitle.horizontalSpan = 2;
872
                Label lblTitleVolConfig = new Label(compositeWidget, SWT.CENTER|SWT.BORDER);
873
                lblTitleVolConfig.setLayoutData(gridDataTitle);
874
                lblTitleVolConfig.setFont(fontTitle);
875
                lblTitleVolConfig.setBackground(labelTitleBackgroundColor);
876
                lblTitleVolConfig.setText("Volume Parameters Information");
877

    
878
                String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
879
                Arrays.sort(keysProp);
880
                labelsField.clear();
881
                textsField.clear();
882
                combosField.clear();
883
                for (int i = 0; i < keysProp.length; i++) {
884
                        keyProp = keysProp[i];
885
                        if ( ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
886
                                        ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
887
                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf())) ) ||
888
                                                        ("filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
889
                                                                        ("fs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
890
                                                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) ) )                
891
                                                                                        || ("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()))
892

    
893
                                        ){
894

    
895
                                Label lbl = new Label(compositeWidget, SWT.NONE);
896
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
897
                                lbl.setText(zfs.getZvol().zProperties.get(keyProp).getLabelProperty());
898
                                lbl.setFont(fontWidget);
899
                                lbl.setBackground(labelFieldBackgroundColor);
900
                                if ( "noupdateable".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
901
                                        labelsField.add(new Label(compositeWidget, SWT.NONE));
902
                                        labelsField.get(labelsField.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
903
                                        //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
904
                                        labelsField.get(labelsField.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
905
                                        labelsField.get(labelsField.size()-1).setBackground(labelFieldBackgroundColor);
906
                                }else{
907
                                        if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())){
908
                                                textsField.add(new Text(compositeWidget, SWT.WRAP|SWT.BORDER));
909
                                                textsField.get(textsField.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
910
                                                //textsField.get(textsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
911
                                                textsField.get(textsField.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
912
                                                textsField.get(textsField.size()-1).setBackground(textFieldBackgroundColor);
913
                                        }else{
914

    
915
                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())){
916
                                                        combosField.add(new Combo(compositeWidget, SWT.NONE));
917
                                                        combosField.get(combosField.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
918
                                                        combosField.get(combosField.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
919
                                                        //combosField.get(combosField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
920
                                                        String[] keysPermitValue = (String[])zfs.getZvol().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
921
                                                        for (int cpt=0;cpt <zfs.getZvol().zProperties.get(keyProp).getPermitValue().size();cpt++){
922
                                                                String keyPermitValue = keysPermitValue[cpt];
923
                                                                combosField.get(combosField.size()-1).add(zfs.getZvol().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
924
                                                        }
925
                                                }
926
                                        }
927
                                }
928
                        }
929
                }
930
                scrolledCreateVol.setContent(compositeWidget);
931
                scrolledCreateVol.setExpandVertical(true);
932
                scrolledCreateVol.setExpandHorizontal(true);
933
                scrolledCreateVol.setMinSize(compositeWidget.computeSize(SWT.DEFAULT,SWT.DEFAULT));
934

    
935
        }
936

    
937
        private void createTabItemCreateVol(){
938
                /******************************************************************************
939
                 * CREATE TAB : Create Volume
940
                 ******************************************************************************/
941
                tbtmCreateVolFS = new TabItem(tabFolderConfig, SWT.NONE);
942
                tbtmCreateVolFS.setText("Create Volume/FileSystem");
943
                compositeCreateVolFS = new Composite(tabFolderConfig, SWT.NONE);
944
                tbtmCreateVolFS.setControl(compositeCreateVolFS);
945
                GridLayout gridLayoutCreateVolFS = new GridLayout();
946
                gridLayoutCreateVolFS.numColumns =1;
947
                compositeCreateVolFS.setLayout(gridLayoutCreateVolFS);
948
                compositeCreateVolFS.setBackground(tabFolderBackgroundColor);
949

    
950

    
951

    
952
                refreshCreateZfsVolFS();
953

    
954

    
955

    
956

    
957
        }
958

    
959
        private void createTabItemIscsi(){
960
                /******************************************************************************
961
                 * CREATE TAB : Add ISCSI Config
962
                 ******************************************************************************/
963
                tbtmIscsi = new TabItem(tabFolderConfig, SWT.NONE);
964
                tbtmIscsi.setText("ISCSI Configuration");
965
                compositeIscsi = new Composite(tabFolderConfig, SWT.NONE);
966
                tbtmIscsi.setControl(compositeIscsi);
967
                GridLayout gridLayoutCreateIscsi = new GridLayout();
968
                //gridLayoutCreateIscsi.numColumns =2;
969
                compositeIscsi.setLayout(gridLayoutCreateIscsi);
970
                compositeIscsi.setBackground(tabFolderBackgroundColor);
971

    
972
                Group groupListSession= new Group(compositeIscsi,SWT.NONE);
973
                groupListSession.setBackground(groupBackgroundColor);
974
                groupListSession.setLayout(new GridLayout());
975
                GridData gridDataListSession=new GridData(GridData.FILL_HORIZONTAL);
976
                //gridDataServerConfig.heightHint=500;
977
                //gridDataServerConfig.minimumHeight=500;
978
                gridDataListSession.heightHint=120;
979
                groupListSession.setLayoutData(gridDataListSession);
980

    
981
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
982
                gridDataTitle.horizontalSpan = 2;
983
                Label lblTitleListSession = new Label(groupListSession, SWT.CENTER|SWT.BORDER);
984
                lblTitleListSession.setLayoutData(gridDataTitle);
985
                lblTitleListSession.setFont(fontTitle);
986
                lblTitleListSession.setBackground(labelTitleBackgroundColor);
987
                lblTitleListSession.setText("ISCSI Session List");
988

    
989
                GridData gd_tableIscsiSession = new GridData(GridData.FILL,GridData.FILL, true, true);
990
                gd_tableIscsiSession.heightHint = 100;
991
                gd_tableIscsiSession.horizontalSpan = 2;
992
                tableIscsiSession = new Table(groupListSession, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
993
                tableIscsiSession.setHeaderVisible(true);
994
                tableIscsiSession.setLinesVisible(true);
995
                tableIscsiSession.setLayoutData(gd_tableIscsiSession);
996
                String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
997
                for (int i = 0; i < keysProp.length; i++) {
998
                        keyProp = keysProp[i];
999
                        if ( "multinoupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
1000
                                log.info("create tab iscsi");
1001
                                tablecolumnsFieldAddIscsi.add(new TableColumn(tableIscsiSession, SWT.NONE));
1002
                                tablecolumnsFieldAddIscsi.get(tablecolumnsFieldAddIscsi.size()-1).setWidth(150);
1003
                                tablecolumnsFieldAddIscsi.get(tablecolumnsFieldAddIscsi.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1004
                        }
1005
                }
1006

    
1007
                Group groupSessionParameters= new Group(compositeIscsi,SWT.NONE);
1008
                groupSessionParameters.setBackground(groupBackgroundColor);
1009
                GridLayout gridLayoutSessionParemeters = new GridLayout();
1010
                gridLayoutSessionParemeters.numColumns =2;
1011
                groupSessionParameters.setLayout(gridLayoutSessionParemeters);
1012

    
1013
                GridData gridDataSessionParameters=new GridData(GridData.FILL_HORIZONTAL);
1014
                //gridDataSessionParameters.heightHint=250;
1015
                groupSessionParameters.setLayoutData(gridDataSessionParameters);
1016

    
1017
                GridData gridDataTitleSessionParameters = new GridData(GridData.FILL, GridData.CENTER, true, false);
1018
                gridDataTitleSessionParameters.horizontalSpan = 2;
1019
                Label lblTitreSessionParameters = new Label(groupSessionParameters, SWT.CENTER|SWT.BORDER);
1020
                lblTitreSessionParameters.setLayoutData(gridDataTitleSessionParameters);
1021
                lblTitreSessionParameters.setFont(fontTitle);
1022
                lblTitreSessionParameters.setBackground(labelTitleBackgroundColor);
1023
                lblTitreSessionParameters.setText("ISCSI Session Parameters");
1024
                keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
1025
                Arrays.sort(keysProp);
1026
                labelsFieldAddIscsi.clear();
1027
                textsFieldAddIscsi.clear();
1028
                combosFieldAddIscsi.clear();
1029

    
1030
                for (int i = 0; i < keysProp.length; i++) {
1031
                        keyProp = keysProp[i];
1032
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1033
                                Label lbl = new Label(groupSessionParameters, SWT.NONE);
1034
                                lbl.setFont(fontWidget);
1035
                                lbl.setBackground(labelFieldBackgroundColor);
1036
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1037
                                lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
1038

    
1039
                                labelsFieldAddIscsi.add(new Label(groupSessionParameters, SWT.NONE));
1040
                                labelsFieldAddIscsi.get(labelsFieldAddIscsi.size()-1).setBackground(labelFieldBackgroundColor);
1041
                                labelsFieldAddIscsi.get(labelsFieldAddIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1042
                                labelsFieldAddIscsi.get(labelsFieldAddIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1043
                        }else{
1044
                                if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
1045
                                        Label lbl = new Label(groupSessionParameters, SWT.NONE);
1046
                                        lbl.setFont(fontWidget);
1047
                                        lbl.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
1048
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1049
                                        lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
1050

    
1051
                                        textsFieldAddIscsi.add(new Text(groupSessionParameters, SWT.WRAP|SWT.BORDER));
1052
                                        textsFieldAddIscsi.get(textsFieldAddIscsi.size()-1).setBackground(textFieldBackgroundColor);
1053
                                        textsFieldAddIscsi.get(textsFieldAddIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1054
                                        //textsField.get(textsField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1055
                                        textsFieldAddIscsi.get(textsFieldAddIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1056

    
1057
                                }else{
1058

    
1059
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
1060
                                                Label lbl = new Label(groupSessionParameters, SWT.NONE);
1061
                                                lbl.setFont(fontWidget);
1062
                                                lbl.setBackground(labelFieldBackgroundColor);
1063
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1064
                                                lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
1065

    
1066
                                                combosFieldAddIscsi.add(new Combo(groupSessionParameters, SWT.NONE));
1067
                                                combosFieldAddIscsi.get(combosFieldAddIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1068
                                                combosFieldAddIscsi.get(combosFieldAddIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1069
                                                //combosField.get(combosField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
1070
                                                String[] keysPermitValue = (String[]) zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
1071
                                                for (int cpt=0;cpt <zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().size();cpt++){
1072
                                                        String keyPermitValue = keysPermitValue[cpt];
1073
                                                        combosFieldAddIscsi.get(combosFieldAddIscsi.size()-1).add(zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
1074
                                                }
1075
                                        }
1076
                                }
1077

    
1078
                        }
1079
                }
1080
                Button btnCreateIscsi = new Button(groupSessionParameters, SWT.None);
1081
                btnCreateIscsi.setText("Enable Iscsi");
1082
                btnCreateIscsi.addListener(SWT.Selection, new Listener() {
1083

    
1084
                        public void handleEvent(final Event event) {
1085
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1086

    
1087
                                        String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
1088
                                        Arrays.sort(keysProp);
1089

    
1090
                                        for (int i = 0; i < keysProp.length; i++) {
1091
                                                keyProp = keysProp[i];
1092
                                                log.debug("btnCreateIscsi :"+keyProp);
1093
                                                if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1094
                                                        for (int indLabel=0;indLabel<labelsFieldAddIscsi.size();indLabel++){
1095
                                                                if ( labelsFieldAddIscsi.get(indLabel).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
1096
                                                                        zfs.getZiscsi().zProperties.get(keyProp).setValue(labelsFieldAddIscsi.get(indLabel).getText());
1097
                                                                }
1098
                                                        }
1099
                                                }else{
1100
                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1101
                                                                for (int indText=0;indText<textsFieldAddIscsi.size();indText++){
1102
                                                                        if ( textsFieldAddIscsi.get(indText).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
1103
                                                                                zfs.getZiscsi().zProperties.get(keyProp).setValue(textsFieldAddIscsi.get(indText).getText());
1104
                                                                        }
1105
                                                                }
1106

    
1107
                                                        }else{
1108

    
1109
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
1110
                                                                        for (int indList=0;indList<combosFieldAddIscsi.size();indList++){
1111
                                                                                log.debug("first loop"+combosFieldAddIscsi.get(indList).getData()+" "+zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
1112

    
1113
                                                                                if ( combosFieldAddIscsi.get(indList).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
1114
                                                                                        zfs.getZiscsi().zProperties.get(keyProp).setValue(combosFieldAddIscsi.get(indList).getText());
1115
                                                                                        log.debug(zfs.getZiscsi().zProperties.get(keyProp).getMultivalues());
1116
                                                                                }
1117
                                                                        }
1118
                                                                }
1119
                                                        }
1120
                                                }
1121
                                        }
1122
                                        if ("snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
1123
                                                zfs.getZiscsi().zProperties.get("iomode").setValue("ro");
1124
                                        }
1125
                                        zfs.zfsCreateIscsi();
1126

    
1127
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
1128
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1129
                                        Arrays.sort(keysPropError);
1130
                                        String textBox = "";
1131
                                        for (int i = 0; i < keysPropError.length; i++) {
1132
                                                String keyPropError = keysPropError[i];
1133
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
1134
                                        }
1135
                                        if (keysPropError.length>0){
1136
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1137
                                                messageBoxInfo.setText("Warning");
1138
                                                messageBoxInfo.setMessage(textBox);
1139
                                                messageBoxInfo.open();
1140
                                        }else{
1141
                                                refreshIscsiSession();
1142
                                                if ("volume".equals(zfs.getZvol().zProperties.get("type").getValue())){
1143
                                                        tree.getSelection()[0].setImage(imageStorageOnline);
1144
                                                }else{
1145
                                                        if ("snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
1146
                                                                tree.getSelection()[0].setImage(imageSnapshotOnline);
1147
                                                        }
1148
                                                }
1149

    
1150
                                        }
1151

    
1152
                                }        
1153
                        }
1154
                });
1155

    
1156
                Button btnDelIscsi = new Button(groupSessionParameters, SWT.None);
1157
                btnDelIscsi.setText("Disable Iscsi");
1158
                btnDelIscsi.addListener(SWT.Selection, new Listener() {
1159

    
1160

    
1161

    
1162
                        public void handleEvent(final Event event) {
1163

    
1164
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")&& !"filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
1165
                                        zfs.zfsDelIscsi();
1166
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
1167
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1168
                                        Arrays.sort(keysPropError);
1169
                                        String textBox = "";
1170
                                        for (int i = 0; i < keysPropError.length; i++) {
1171
                                                String keyPropError = keysPropError[i];
1172
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
1173
                                        }
1174
                                        if (keysPropError.length>0){
1175
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1176
                                                messageBoxInfo.setText("Warning");
1177
                                                messageBoxInfo.setMessage(textBox);
1178
                                                messageBoxInfo.open();
1179
                                        }else{
1180
                                                refreshIscsiSession();
1181
                                                if ("volume".equals(zfs.getZvol().zProperties.get("type").getValue())){
1182
                                                        tree.getSelection()[0].setImage(imageStorageOffline);
1183
                                                }else{
1184
                                                        if ("snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
1185
                                                                tree.getSelection()[0].setImage(imageSnapshotOffline);
1186
                                                        }
1187
                                                }
1188

    
1189
                                        }
1190

    
1191
                                }
1192
                        }
1193
                });
1194
        }
1195

    
1196
        /************************************************************************************************************************************
1197
         * 
1198
         * Create tabItem Snapshot Config
1199
         * 
1200
         ************************************************************************************************************************************/
1201

    
1202
        private void createTabItemSnapshot(){
1203
                tbtmSnapshot = new TabItem(tabFolderConfig, SWT.NONE);
1204
                tbtmSnapshot.setText("Snapshot Configuration");
1205
                compositeSnapshot = new Composite(tabFolderConfig, SWT.NONE);
1206
                tbtmSnapshot.setControl(compositeSnapshot);
1207
                GridLayout gridLayoutActiveSnapshot = new GridLayout();
1208
                //gridLayoutCreateIscsi.numColumns =2;
1209
                compositeSnapshot.setLayout(gridLayoutActiveSnapshot);
1210
                compositeSnapshot.setBackground(tabFolderBackgroundColor);
1211

    
1212

    
1213

    
1214
                Group groupActiveSnapshot=new Group(compositeSnapshot,SWT.NONE);
1215
                groupActiveSnapshot.setBackground(groupBackgroundColor);
1216
                GridLayout gridLayoutWidgetSnapshot = new GridLayout();
1217
                gridLayoutWidgetSnapshot.numColumns =2;
1218
                groupActiveSnapshot.setLayout(gridLayoutWidgetSnapshot);
1219
                GridData gridDataActiveSnapshot=new GridData(GridData.FILL_HORIZONTAL);
1220
                //gridDataActiveSnapshot.heightHint=500;
1221

    
1222
                groupActiveSnapshot.setLayoutData(gridDataActiveSnapshot);
1223

    
1224
                GridData gridDataTitleSnapshots = new GridData(GridData.FILL, GridData.CENTER, true, false);
1225
                gridDataTitleSnapshots.horizontalSpan = 2;
1226
                Label lblTitreConfigSnapshots = new Label(groupActiveSnapshot, SWT.CENTER|SWT.BORDER);
1227
                lblTitreConfigSnapshots.setLayoutData(gridDataTitleSnapshots);
1228
                lblTitreConfigSnapshots.setFont(fontTitle);
1229
                lblTitreConfigSnapshots.setText("Enable/Disable Snapshot");
1230
                lblTitreConfigSnapshots.setBackground(labelTitleBackgroundColor);
1231

    
1232
                String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
1233
                Arrays.sort(keysProp);
1234

    
1235
                labelsFieldSnapshotsValue.clear();
1236
                labelsFieldSnapshots.clear();
1237
                textsFieldSnapshots.clear();
1238
                listsFieldSnaphots.clear();
1239
                for (int i = 0; i < keysProp.length; i++) {
1240
                        keyProp = keysProp[i];                                
1241

    
1242
                        if ( "noupdateable".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1243
                                Label lbl = new Label(groupActiveSnapshot, SWT.NONE);
1244
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1245
                                lbl.setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getLabelProperty());
1246
                                lbl.setFont(fontWidget);
1247
                                lbl.setBackground(labelFieldBackgroundColor);
1248
                                labelsFieldSnapshots.add(new Label(groupActiveSnapshot, SWT.NONE));
1249
                                labelsFieldSnapshots.get(labelsFieldSnapshots.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1250
                                //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1251
                                labelsFieldSnapshots.get(labelsFieldSnapshots.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1252
                                labelsFieldSnapshots.get(labelsFieldSnapshots.size()-1).setBackground(labelFieldBackgroundColor);
1253
                        }else{
1254
                                if ( "freeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())){
1255
                                        Label lbl = new Label(groupActiveSnapshot, SWT.NONE);
1256
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1257
                                        lbl.setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getLabelProperty());
1258
                                        lbl.setFont(fontWidget);
1259
                                        lbl.setBackground(labelFieldBackgroundColor);
1260
                                        textsFieldSnapshots.add(new Text(groupActiveSnapshot,SWT.WRAP| SWT.BORDER));
1261
                                        textsFieldSnapshots.get(textsFieldSnapshots.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1262
                                        //textsField.get(textsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1263
                                        textsFieldSnapshots.get(textsFieldSnapshots.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1264
                                        textsFieldSnapshots.get(textsFieldSnapshots.size()-1).setBackground(textFieldBackgroundColor);
1265
                                }else{
1266

    
1267
                                        if ( "nofreeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())){
1268
                                                Label lbl = new Label(groupActiveSnapshot, SWT.NONE);
1269
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1270
                                                lbl.setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getLabelProperty());
1271
                                                lbl.setFont(fontWidget);
1272
                                                lbl.setBackground(labelFieldBackgroundColor);
1273
                                                labelsFieldSnapshotsValue.add(new Label(groupActiveSnapshot, SWT.BORDER));
1274
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1275
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1276
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setFont(fontWidget);
1277
                                                labelsFieldSnapshotsValue.get(labelsFieldSnapshotsValue.size()-1).setBackground(labelFieldBackgroundColor);
1278
                                                listsFieldSnaphots.add(new org.eclipse.swt.widgets.List(groupActiveSnapshot, SWT.WRAP |SWT.BORDER|SWT.V_SCROLL|SWT.MULTI));
1279
                                                GridData grdData_listSnapshots = new GridData(GridData.FILL, GridData.CENTER, true, false);
1280
                                                grdData_listSnapshots.heightHint=96;
1281
                                                grdData_listSnapshots.horizontalSpan=2;
1282
                                                listsFieldSnaphots.get(listsFieldSnaphots.size()-1).setLayoutData(grdData_listSnapshots);
1283
                                                listsFieldSnaphots.get(listsFieldSnaphots.size()-1).setData(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1284

    
1285
                                                String [] valuePermiValue = zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().values().toArray(new String[0]);
1286
                                                Arrays.sort(valuePermiValue);
1287
                                                listsFieldSnaphots.get(listsFieldSnaphots.size()-1).setItems(valuePermiValue);
1288
                                        }
1289
                                }
1290
                        }
1291
                }
1292
                Button btnEnableSnapshots = new Button(groupActiveSnapshot, SWT.None);
1293
                btnEnableSnapshots.setText("Enable Snapshots");
1294
                btnEnableSnapshots.addListener(SWT.Selection, new Listener() {
1295
                        private List<Object> list4List;
1296

    
1297
                        public void handleEvent(final Event event) {
1298
                                zsnap = zfs;
1299

    
1300
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1301

    
1302
                                        String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
1303
                                        Arrays.sort(keysProp);
1304

    
1305
                                        for (int i = 0; i < keysProp.length; i++) {
1306
                                                keyProp = keysProp[i];
1307
                                                log.debug("btnEnableSnapshot :"+keyProp);
1308
                                                if ( "noupdateable".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1309
                                                        for (int indLabel=0;indLabel<labelsFieldSnapshots.size();indLabel++){
1310
                                                                if ( labelsFieldSnapshots.get(indLabel).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1311
                                                                        zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).setValue(labelsFieldSnapshots.get(indLabel).getText());
1312

    
1313
                                                                }
1314
                                                        }
1315
                                                }else{
1316
                                                        if ( "freeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1317
                                                                for (int indText=0;indText<textsFieldSnapshots.size();indText++){
1318
                                                                        if ( textsFieldSnapshots.get(indText).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1319
                                                                                zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).setValue(textsFieldSnapshots.get(indText).getText());
1320
                                                                        }
1321
                                                                }
1322

    
1323
                                                        }else{
1324

    
1325
                                                                if ( "nofreeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
1326
                                                                        for (int indList=0;indList<listsFieldSnaphots.size();indList++){
1327
                                                                                log.debug("first loop"+listsFieldSnaphots.get(indList).getData()+" "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty());
1328
                                                                                if ( listsFieldSnaphots.get(indList).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1329
                                                                                        list4List = new ArrayList<Object>();
1330
                                                                                        log.debug("second if "+listsFieldSnaphots.get(indList).getSelection().length);
1331
                                                                                        for ( int indSelect=0;indSelect<listsFieldSnaphots.get(indList).getSelection().length;indSelect++){
1332
                                                                                                String[] keysPropPermit = (String[]) zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
1333
                                                                                                log.debug("second loop keys "+keysPropPermit+" selection in use "+listsFieldSnaphots.get(indList).getSelection()[indSelect]);
1334
                                                                                                for ( int indPermit=0; indPermit<keysPropPermit.length;indPermit++){
1335
                                                                                                        String keyPropPermit = keysPropPermit[indPermit];
1336
                                                                                                        log.debug("Thirth if "+keyPropPermit+" "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit));
1337
                                                                                                        if ( zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit).equals(listsFieldSnaphots.get(indList).getSelection()[indSelect]) ){
1338
                                                                                                                list4List.add(keyPropPermit);
1339

    
1340
                                                                                                        }
1341
                                                                                                }
1342
                                                                                        }
1343

    
1344
                                                                                        zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).setMultivalues(list4List);
1345
                                                                                        log.debug( " "+list4List+ zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getMultivalues());
1346
                                                                                }
1347
                                                                        }
1348
                                                                }
1349
                                                        }
1350
                                                }
1351
                                        }
1352
                                        zsnap.zfsEnableSnapshots();
1353
                                        String[] keysPropError = zsnap.getError().keySet().toArray(new String[0]);
1354
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1355
                                        Arrays.sort(keysPropError);
1356
                                        String textBox = "";
1357
                                        for (int i = 0; i < keysPropError.length; i++) {
1358
                                                String keyPropError = keysPropError[i];
1359
                                                textBox = textBox +zsnap.getError().get(keyPropError)+".\n";
1360
                                        }
1361
                                        if (keysPropError.length>0){
1362
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1363
                                                messageBoxInfo.setText("Warning");
1364
                                                messageBoxInfo.setMessage(textBox);
1365
                                                messageBoxInfo.open();
1366
                                        }else{
1367
                                                for (int indList=0;indList<listsFieldSnaphots.size();indList++){
1368
                                                        listsFieldSnaphots.get(indList).deselectAll();
1369
                                                }
1370
                                        }
1371

    
1372
                                        refreshConfigSnapshot();
1373
                                }
1374
                        }
1375
                });
1376
                Button btnDisableSnapshots = new Button(groupActiveSnapshot, SWT.None);
1377
                btnDisableSnapshots.setText("Disable Snapshots");
1378
                btnDisableSnapshots.addListener(SWT.Selection, new Listener() {
1379

    
1380
                        public void handleEvent(final Event event) {
1381
                                //zsnap = zfs;
1382
                                boolean checkValue=true;
1383
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1384

    
1385
                                        String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
1386
                                        Arrays.sort(keysProp);
1387

    
1388
                                        for (int i = 0; i < keysProp.length; i++) {
1389
                                                keyProp = keysProp[i];
1390
                                                log.debug("btnEnableSnapshot :"+keyProp);
1391
                                                if ( zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue().equalsIgnoreCase("")){
1392
                                                        checkValue=false;
1393
                                                }
1394
                                        }
1395
                                        if (checkValue == true){
1396
                                                zsnap.zfsDisableSnapshots();
1397
                                                refreshConfigSnapshot();
1398

    
1399
                                        }
1400
                                }
1401

    
1402
                        }
1403
                });
1404

    
1405
        }
1406

    
1407
        /************************************************************************************************************************************
1408
         * 
1409
         * Create tabItem Replication Config
1410
         * 
1411
         ************************************************************************************************************************************/
1412

    
1413
        private void createTabItemReplica(){
1414
                tbtmReplica = new TabItem(tabFolderConfig, SWT.NONE);
1415
                tbtmReplica.setText("Replication Configuration");
1416
                compositeReplica = new Composite(tabFolderConfig, SWT.NONE);
1417
                tbtmReplica.setControl(compositeReplica);
1418
                GridLayout gridLayoutActiveReplica = new GridLayout();
1419
                //gridLayoutCreateIscsi.numColumns =2;
1420
                compositeReplica.setLayout(gridLayoutActiveReplica);
1421
                compositeReplica.setBackground(tabFolderBackgroundColor);
1422

    
1423
                Group groupActiveReplica=new Group(compositeReplica,SWT.NONE);
1424
                groupActiveReplica.setBackground(groupBackgroundColor);
1425
                groupActiveReplica.setLayout(new GridLayout());
1426
                GridData gridDataActiveReplica=new GridData(SWT.FILL, SWT.FILL, true, true);
1427
                //gridDataActiveSnapshot.heightHint=500;
1428
                groupActiveReplica.setLayoutData(gridDataActiveReplica);
1429

    
1430
                ScrolledComposite scrolledReplicaConfig=new ScrolledComposite(groupActiveReplica,SWT.V_SCROLL);
1431
                scrolledReplicaConfig.setLayoutData(new GridData(GridData.FILL_BOTH));
1432
                Composite compositeWidgetReplica=new Composite(scrolledReplicaConfig,SWT.NONE);
1433
                compositeWidgetReplica.setBackground(compositeBackgroundColor);
1434
                GridLayout gridLayoutWidget = new GridLayout();
1435
                gridLayoutWidget.numColumns =2;
1436
                compositeWidgetReplica.setLayout(gridLayoutWidget);
1437

    
1438
                GridData gridDataTitleReplica = new GridData(GridData.FILL, GridData.CENTER, true, false);
1439
                gridDataTitleReplica.horizontalSpan = 2;
1440
                Label lblTitreConfigReplica = new Label(compositeWidgetReplica, SWT.CENTER|SWT.BORDER);
1441
                lblTitreConfigReplica.setLayoutData(gridDataTitleReplica);
1442
                lblTitreConfigReplica.setFont(fontTitle);
1443
                lblTitreConfigReplica.setText("Enable/Disable Replication");
1444
                lblTitreConfigReplica.setBackground(labelTitleBackgroundColor);
1445

    
1446
                String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
1447
                Arrays.sort(keysProp);
1448

    
1449
                labelsFieldReplicaValue.clear();
1450
                labelsFieldReplica.clear();
1451
                textsFieldReplica.clear();
1452
                listsFieldReplica.clear();
1453
                for (int i = 0; i < keysProp.length; i++) {
1454
                        keyProp = keysProp[i];                        
1455

    
1456
                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType()) && (zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() !=null)){
1457
                                Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1458
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1459
                                lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1460
                                lbl.setFont(fontWidget);
1461
                                lbl.setBackground(labelFieldBackgroundColor);
1462
                                labelsFieldReplicaValue.add(new Label(compositeWidgetReplica, SWT.BORDER));
1463
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1464
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1465
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setFont(fontWidget);
1466
                                labelsFieldReplicaValue.get(labelsFieldReplicaValue.size()-1).setBackground(labelFieldBackgroundColor);
1467
                                listsFieldReplica.add(new org.eclipse.swt.widgets.List(compositeWidgetReplica, SWT.WRAP |SWT.BORDER|SWT.V_SCROLL|SWT.MULTI));
1468
                                GridData grdData_listReplicas = new GridData(GridData.FILL, GridData.CENTER, true, false);
1469
                                grdData_listReplicas.heightHint=96;
1470
                                grdData_listReplicas.horizontalSpan=2;
1471
                                listsFieldReplica.get(listsFieldReplica.size()-1).setLayoutData(grdData_listReplicas);
1472
                                listsFieldReplica.get(listsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1473
                                String [] valuePermiValue = zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().values().toArray(new String[0]);
1474
                                Arrays.sort(valuePermiValue);
1475
                                listsFieldReplica.get(listsFieldReplica.size()-1).setItems(valuePermiValue);
1476

    
1477
                        }
1478
                }
1479
                for (int i = 0; i < keysProp.length; i++) {
1480
                        keyProp = keysProp[i];                
1481
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
1482
                                Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1483
                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1484
                                lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1485
                                lbl.setFont(fontWidget);
1486
                                lbl.setBackground(labelFieldBackgroundColor);
1487
                                labelsFieldReplica.add(new Label(compositeWidgetReplica, SWT.NONE));
1488
                                labelsFieldReplica.get(labelsFieldReplica.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1489
                                //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1490
                                labelsFieldReplica.get(labelsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1491
                                labelsFieldReplica.get(labelsFieldReplica.size()-1).setBackground(labelFieldBackgroundColor);
1492
                        }else{
1493
                                if ( "freeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())){
1494
                                        Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1495
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1496
                                        lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1497
                                        lbl.setFont(fontWidget);
1498
                                        lbl.setBackground(labelFieldBackgroundColor);
1499
                                        textsFieldReplica.add(new Text(compositeWidgetReplica,SWT.WRAP| SWT.BORDER));
1500
                                        textsFieldReplica.get(textsFieldReplica.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1501
                                        //textsField.get(textsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1502
                                        textsFieldReplica.get(textsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1503
                                        textsFieldReplica.get(textsFieldReplica.size()-1).setBackground(textFieldBackgroundColor);
1504
                                }else{
1505

    
1506

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

    
1509

    
1510
                                                Label lbl = new Label(compositeWidgetReplica, SWT.NONE);
1511
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1512
                                                lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1513
                                                lbl.setFont(fontWidget);
1514
                                                lbl.setBackground(labelFieldBackgroundColor);
1515

    
1516
                                                combosFieldReplica.add((new Combo(compositeWidgetReplica, SWT.READ_ONLY)));
1517
                                                GridData grdData_listReplicas = new GridData(GridData.FILL, GridData.CENTER, true, false);
1518
                                                combosFieldReplica.get(combosFieldReplica.size()-1).setLayoutData(grdData_listReplicas);
1519
                                                combosFieldReplica.get(combosFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1520

    
1521
                                                log.debug("createTabItemReplica "+keyProp);
1522
                                                if (keyProp.equalsIgnoreCase("server")){
1523
                                                        lbl = new Label(compositeWidgetReplica, SWT.NONE);
1524
                                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1525
                                                        lbl.setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getLabelProperty());
1526
                                                        lbl.setFont(fontWidget);
1527
                                                        lbl.setBackground(labelFieldBackgroundColor);
1528

    
1529
                                                        labelsFieldReplica.add(new Label(compositeWidgetReplica, SWT.NONE));
1530
                                                        labelsFieldReplica.get(labelsFieldReplica.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
1531
                                                        //labelsField.get(labelsField.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
1532
                                                        labelsFieldReplica.get(labelsFieldReplica.size()-1).setData(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1533
                                                        labelsFieldReplica.get(labelsFieldReplica.size()-1).setBackground(labelFieldBackgroundColor);
1534
                                                        combosFieldReplica.get(combosFieldReplica.size()-1).addListener(SWT.Selection, new Listener() {
1535

    
1536
                                                                public void handleEvent(final Event event) {
1537
                                                                        final Combo comboSrv = (Combo) event.widget;
1538
                                                                        zfs.getServer(comboSrv.getText());
1539
                                                                        List zpoolList = zfs.zpoolList();
1540
                                                                        String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
1541
                                                                        Arrays.sort(keysProp);
1542

    
1543
                                                                        for (int i = 0; i < keysProp.length; i++) {
1544
                                                                                keyProp = keysProp[i];
1545
                                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())&& zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() ==null) {
1546
                                                                                        if (keyProp.equalsIgnoreCase("replicapool")){
1547

    
1548
                                                                                                for (int indCombo=0;indCombo<combosFieldReplica.size();indCombo++){
1549
                                                                                                        if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1550
                                                                                                                combosFieldReplica.get(indCombo).removeAll();
1551
                                                                                                                String[] keysPropSrv = (String[]) zfs.getCacheSession().keySet().toArray(new String[0]);
1552
                                                                                                                Arrays.sort(keysPropSrv);
1553
                                                                                                                for (int cptPool=0;cptPool<zpoolList.size();cptPool++){
1554
                                                                                                                        combosFieldReplica.get(indCombo).add(zpoolList.get(cptPool).toString());
1555
                                                                                                                        log.debug("REFRESHConfig3 : "+zpoolList.get(cptPool).toString());
1556
                                                                                                                }
1557
                                                                                                        }
1558
                                                                                                }
1559

    
1560
                                                                                        }
1561
                                                                                }
1562
                                                                        }
1563

    
1564
                                                                }
1565
                                                        });
1566
                                                }
1567

    
1568
                                        }
1569
                                }
1570
                        }
1571
                }
1572
                Button btnEnableReplicas = new Button(compositeWidgetReplica, SWT.None);
1573
                btnEnableReplicas.setText("Enable Replication");
1574
                btnEnableReplicas.addListener(SWT.Selection, new Listener() {
1575
                        private List<Object> list4List;
1576

    
1577
                        public void handleEvent(final Event event) {
1578

    
1579

    
1580
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1581

    
1582
                                        String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
1583
                                        Arrays.sort(keysProp);
1584

    
1585
                                        for (int i = 0; i < keysProp.length; i++) {
1586
                                                keyProp = keysProp[i];
1587
                                                log.debug("btnEnableReplication :"+keyProp);
1588
                                                if ( "noupdateable".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
1589
                                                        for (int indLabel=0;indLabel<labelsFieldReplica.size();indLabel++){
1590
                                                                if ( labelsFieldReplica.get(indLabel).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1591
                                                                        zfs.getZreplicas().zSchedulerProperties.get(keyProp).setValue(labelsFieldReplica.get(indLabel).getText());
1592

    
1593
                                                                }
1594
                                                        }
1595
                                                }else{
1596
                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
1597
                                                                for (int indText=0;indText<textsFieldReplica.size();indText++){
1598
                                                                        if ( textsFieldReplica.get(indText).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1599
                                                                                zfs.getZreplicas().zSchedulerProperties.get(keyProp).setValue(textsFieldReplica.get(indText).getText());
1600
                                                                        }
1601
                                                                }
1602

    
1603
                                                        }else{
1604

    
1605
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType()) && (zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() !=null)){
1606
                                                                        for (int indList=0;indList<listsFieldReplica.size();indList++){
1607
                                                                                log.debug("first loop"+listsFieldReplica.get(indList).getData()+" "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty());
1608
                                                                                if ( listsFieldReplica.get(indList).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1609
                                                                                        list4List = new ArrayList<Object>();
1610
                                                                                        log.debug("second if "+listsFieldReplica.get(indList).getSelection().length);
1611
                                                                                        for ( int indSelect=0;indSelect<listsFieldReplica.get(indList).getSelection().length;indSelect++){
1612
                                                                                                String[] keysPropPermit = (String[]) zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
1613
                                                                                                log.debug("second loop keys "+keysPropPermit+" selection in use "+listsFieldReplica.get(indList).getSelection()[indSelect]);
1614
                                                                                                for ( int indPermit=0; indPermit<keysPropPermit.length;indPermit++){
1615
                                                                                                        String keyPropPermit = keysPropPermit[indPermit];
1616
                                                                                                        log.debug("Thirth if "+keyPropPermit+" "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit));
1617
                                                                                                        if ( zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue().get(keyPropPermit).equals(listsFieldReplica.get(indList).getSelection()[indSelect]) ){
1618
                                                                                                                list4List.add(keyPropPermit);
1619

    
1620
                                                                                                        }
1621
                                                                                                }
1622
                                                                                        }
1623

    
1624
                                                                                        zfs.getZreplicas().zSchedulerProperties.get(keyProp).setMultivalues(list4List);
1625
                                                                                        log.debug( " "+list4List+ zfs.getZreplicas().zSchedulerProperties.get(keyProp).getMultivalues());
1626
                                                                                }
1627
                                                                        }
1628
                                                                }
1629
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType()) && (zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() ==null)){
1630
                                                                        for (int indCombo=0;indCombo<combosFieldReplica.size();indCombo++){
1631
                                                                                if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
1632
                                                                                        zfs.getZreplicas().zSchedulerProperties.get(keyProp).setValue(combosFieldReplica.get(indCombo).getText());
1633
                                                                                }
1634
                                                                        }
1635
                                                                }
1636
                                                        }
1637
                                                }
1638
                                        }
1639
                                        zfs.getZreplicas().zSchedulerProperties.get("name").setValue(zfs.getZvol().zProperties.get("name").getValue());
1640
                                        if ( tree.getSelectionCount() >0){
1641

    
1642
                                                if (tree.getSelection()[0].getParentItem() != null){
1643
                                                        TreeItem topRoot = tree.getSelection()[0];
1644
                                                        while (topRoot.getParentItem() != null){
1645
                                                                topRoot = topRoot.getParentItem();
1646
                                                        }
1647
                                                        TreeItem treeZfsListItem = tree.getSelection()[0];
1648
                                                        tree.select(treeZfsListItem);
1649
                                                        zfs.getZserver().zProperties.get("serverIP").setValue(topRoot.getText());
1650
                                                }
1651
                                        }
1652
                                        zfs.zfsEnableReplicas();
1653
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
1654
                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1655
                                        Arrays.sort(keysPropError);
1656
                                        String textBox = "";
1657
                                        for (int i = 0; i < keysPropError.length; i++) {
1658
                                                String keyPropError = keysPropError[i];
1659
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
1660
                                        }
1661
                                        if (keysPropError.length>0){
1662
                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
1663
                                                messageBoxInfo.setText("Warning");
1664
                                                messageBoxInfo.setMessage(textBox);
1665
                                                messageBoxInfo.open();
1666
                                        }else{
1667
                                                for (int indList=0;indList<listsFieldReplica.size();indList++){
1668
                                                        listsFieldReplica.get(indList).deselectAll();
1669
                                                }
1670
                                        }
1671

    
1672
                                        refreshConfigReplica();
1673
                                }
1674
                        }
1675
                });
1676
                Button btnDisableReplicas = new Button(compositeWidgetReplica, SWT.None);
1677
                btnDisableReplicas.setText("Disable Replication");
1678
                btnDisableReplicas.addListener(SWT.Selection, new Listener() {
1679

    
1680
                        public void handleEvent(final Event event) {
1681
                                //zsnap = zfs;
1682
                                boolean checkValue=true;
1683
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("")){
1684
                                        zfs.getZreplicas().zSchedulerProperties.get("name").setValue(zfs.getZvol().zProperties.get("name").getValue());
1685
                                        zfs.zfsDisableReplicas();
1686
                                        refreshConfigReplica();
1687

    
1688
                                }
1689

    
1690
                        }
1691
                });
1692

    
1693
                scrolledReplicaConfig.setContent(compositeWidgetReplica);
1694
                scrolledReplicaConfig.setExpandVertical(true);
1695
                scrolledReplicaConfig.setExpandHorizontal(true);
1696
                scrolledReplicaConfig.setMinSize(compositeWidgetReplica.computeSize(SWT.DEFAULT,SWT.DEFAULT));
1697
        }
1698

    
1699

    
1700

    
1701

    
1702
        public void refreshTreeZFSList(final TreeItem rootTree){
1703

    
1704
                thrConnect = new Thread(new Runnable() {
1705
                        public void run() {
1706
                                log.debug("start update ZFS volumes list ....");
1707
                                zfsList = zfs.zfsList();
1708

    
1709
                                log.debug(zfsList.size());
1710
                                for (int i = 0; i < zfsList.size(); i++) {
1711
                                        final int ind=i;
1712
                                        log.debug("refreshTreeZFSList "+zfsList.get(i));
1713
                                        zfs.zfsGetAllVolume(zfsList.get(i).toString());
1714

    
1715
                                        //zfs.zfsGetInfoByProperty(zfsList.get(i).toString(), "type");
1716
                                        if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
1717
                                                infoUsedSize=zfs.getZvol().zProperties.get("usedbydataset").getValue()+"/"+zfs.getZvol().zProperties.get("available").getValue();
1718
                                        }else{
1719
                                                infoUsedSize=zfs.getZvol().zProperties.get("used").getValue()+" / "+zfs.getZvol().zProperties.get("volsize").getValue();
1720
                                        }
1721
                                        if ( ("volume".equals(zfs.getZvol().zProperties.get("type").getValue()) && zfs.getIscsiListConfigVol(zfsList.get(i).toString()) && ! "".equalsIgnoreCase(zfs.getZiscsi().zProperties.get("tid").getValue()))
1722
                                                        || ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue()) && "yes".equals(zfs.getZvol().zProperties.get("mounted").getValue()))        ){
1723
                                                Display.getDefault().syncExec(new Runnable() {
1724
                                                        public void run() {
1725
                                                                updateItemTreeZfsList(true, zfsList.get(ind).toString(),  rootTree,infoUsedSize,-1);
1726
                                                        }
1727
                                                });        
1728
                                        }else{
1729
                                                Display.getDefault().syncExec(new Runnable() {
1730
                                                        public void run() {
1731
                                                                updateItemTreeZfsList(false, zfsList.get(ind).toString(),  rootTree,infoUsedSize,-1);
1732
                                                        }
1733
                                                });
1734
                                        }
1735
                                }
1736
                                Display.getDefault().syncExec(new Runnable() {
1737
                                        public void run() {
1738
                                                btnConnectServer.setEnabled(true);
1739
                                                tabFolderNav.setEnabled(true);
1740
                                                wPB.close();
1741
                                        }
1742
                                });
1743
                        }        
1744

    
1745
                });
1746
                thrConnect.start();
1747
                log.debug("refreshZFSList");
1748
        }
1749

    
1750
        public void refreshTreeZpoolList(){
1751

    
1752
                if (zfs.getCacheSession().containsKey(zfs.getZserver().zProperties.get("serverIP").getValue()) ){
1753
                        final TreeItem root = treeZpool.getSelection()[0];
1754
                        root.setImage(imageServerOnline);
1755
                        log.debug("refreshTreeZpoolList "+" "+keyProp);
1756

    
1757
                        zpoolList = zfs.zpoolList();
1758
                        for (int indPool = 0; indPool < zpoolList.size(); indPool++) {
1759
                                TreeItem item = new TreeItem(root, 0);
1760
                                item.setText(zpoolList.get(indPool).toString());
1761
                                item.setImage(imageStorage);
1762
                                item.setData(zpoolList.get(indPool).toString());
1763
                                //new TreeItem(root, 0);
1764
                        }
1765
                        boolean checkExistInTree = false;
1766

    
1767
                        for (int ind=0;ind<tree.getItemCount();ind++){
1768
                                log.debug("refreshTreeZpoolList "+tree.getItem(ind).getData().toString()+" "+zfs.getZserver().zProperties.get("serverIP").getValue());
1769
                                if ( tree.getItem(ind).getData().toString().equalsIgnoreCase(zfs.getZserver().zProperties.get("serverIP").getValue())){
1770
                                        checkExistInTree=true;
1771
                                }
1772
                        }
1773
                        if ( ! checkExistInTree ){
1774
                                TreeItem rootTreeZvolFS = new TreeItem(tree,SWT.None);
1775
                                rootTreeZvolFS.setText(zfs.getZserver().zProperties.get("serverIP").getValue());
1776
                                rootTreeZvolFS.setData(zfs.getZserver().zProperties.get("serverIP").getValue());
1777
                                rootTreeZvolFS.setImage(imageStorageServer);
1778
                                refreshTreeZFSList(rootTreeZvolFS);        
1779
                        }else{
1780
                                btnConnectServer.setEnabled(true);
1781
                                tabFolderNav.setEnabled(true);
1782
                                wPB.close();
1783
                        }
1784
                }else{
1785
                        treeZpool.clearAll(true);
1786
                        treeZpool.setItemCount(0);
1787
                        List<Object> listGetServer = zfs.getListServer();
1788

    
1789
                        for (int i=0;i<listGetServer.size();i++){
1790
                                zfs.getServer(listGetServer.get(i).toString());
1791
                                final TreeItem root = new TreeItem(treeZpool,SWT.None);
1792
                                root.setText(zfs.getZserver().zProperties.get("serverIP").getValue());
1793
                                root.setData(zfs.getZserver().zProperties.get("serverIP").getValue());
1794
                                root.setImage(imageServerOffline);
1795

    
1796
                        }
1797

    
1798
                }
1799

    
1800
        }
1801

    
1802

    
1803
        private void refreshInfoServer(){
1804
                String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
1805
                Arrays.sort(keysProp);
1806

    
1807
                for (int i = 0; i < keysProp.length; i++) {
1808
                        keyProp = keysProp[i];
1809
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
1810
                                for (int indLabel=0;indLabel<labelsFieldServer.size();indLabel++){
1811
                                        if ( labelsFieldServer.get(indLabel).getData().equals(zfs.getZserver().zProperties.get(keyProp).getNameProperty()) ){
1812
                                                labelsFieldServer.get(indLabel).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1813
                                        }
1814
                                }
1815
                        }else{
1816
                                if ( "freeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
1817
                                        for (int indText=0;indText<textsFieldServer.size();indText++){
1818
                                                if ( textsFieldServer.get(indText).getData().equals(zfs.getZserver().zProperties.get(keyProp).getNameProperty()) ){
1819
                                                        textsFieldServer.get(indText).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1820
                                                }
1821
                                        }
1822
                                }else{
1823
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZserver().zProperties.get(keyProp).getType())) {
1824
                                                for (int indCombo=0;indCombo<combosFieldServer.size();indCombo++){
1825
                                                        if ( combosFieldServer.get(indCombo).getData().equals(zfs.getZserver().zProperties.get(keyProp).getNameProperty()) ){
1826
                                                                combosFieldServer.get(indCombo).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1827
                                                        }
1828
                                                }
1829
                                        }
1830
                                }
1831
                        }
1832
                }
1833
        }
1834

    
1835
        private void refreshInfoZpool(){
1836

    
1837
                String[] keysProp = (String[]) zfs.getZpool().zProperties.keySet().toArray(new String[0]);
1838
                Arrays.sort(keysProp);
1839
                log.debug(keysProp);
1840
                for (int i = 0; i < keysProp.length; i++) {
1841
                        keyProp = keysProp[i];
1842
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
1843
                                for (int indLabel=0;indLabel<labelsFieldPool.size();indLabel++){
1844
                                        if ( labelsFieldPool.get(indLabel).getData().equals(zfs.getZpool().zProperties.get(keyProp).getNameProperty()) ){
1845
                                                labelsFieldPool.get(indLabel).setText(zfs.getZpool().zProperties.get(keyProp).getValue());
1846
                                        }
1847
                                }
1848
                        }else{
1849
                                if ( "freeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
1850
                                        for (int indText=0;indText<textsFieldPool.size();indText++){
1851
                                                if ( textsFieldPool.get(indText).getData().equals(zfs.getZpool().zProperties.get(keyProp).getNameProperty()) ){
1852
                                                        textsFieldPool.get(indText).setText(zfs.getZpool().zProperties.get(keyProp).getValue());
1853
                                                }
1854
                                        }
1855
                                }else{
1856
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZpool().zProperties.get(keyProp).getType())) {
1857
                                                for (int indCombo=0;indCombo<combosFieldPool.size();indCombo++){
1858
                                                        if ( combosFieldPool.get(indCombo).getData().equals(zfs.getZpool().zProperties.get(keyProp).getNameProperty()) ){
1859
                                                                combosFieldPool.get(indCombo).setText(zfs.getZserver().zProperties.get(keyProp).getValue());
1860
                                                        }
1861
                                                }
1862
                                        }
1863
                                }
1864
                        }
1865
                }
1866

    
1867
                //Create Chart Provisioned Space
1868
                dataCharset.clear();        
1869
                if ( !zfs.getZpool().zProperties.get("realuseablespace").getValue().equals("")){
1870

    
1871
                        String refUnit =zfs.getZpool().zProperties.get("realuseablespace").getValue().substring(zfs.getZpool().zProperties.get("realuseablespace").getValue().length()-1, zfs.getZpool().zProperties.get("realuseablespace").getValue().length());
1872
                        log.debug(refUnit);
1873
                        float provisionspace = zfs.convertInReferenceUnit(zfs.getZpool().zProperties.get("provisionspace").getValue(), refUnit);
1874
                        float realuseablespace = zfs.convertInReferenceUnit(zfs.getZpool().zProperties.get("realuseablespace").getValue(), refUnit);
1875
                        float provisionspaceInPourcent = guiTrt.dataInPourcent(provisionspace,realuseablespace);
1876
                        float freespace = realuseablespace - provisionspace;
1877
                        float freespaceInPourcent =  guiTrt.dataInPourcent(freespace,realuseablespace);
1878
                        this.dataCharset.put("Provisioned Space: "+ zfs.getZpool().zProperties.get("provisionspace").getValue(), provisionspaceInPourcent);
1879
                        this.dataCharset.put("Free Space: "+BigDecimal.valueOf(freespace).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+refUnit, freespaceInPourcent  );
1880
                        //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()))) ;
1881
                        PieDataset dataset = guiTrt.createDataset(dataCharset);  
1882
                        JFreeChart chartVolumeConfig = guiTrt.createChart(dataset, "Provisioned Space on "+zfs.getZpool().zProperties.get("realuseablespace").getValue());
1883
                        if ( chartVolumeComposite != null){
1884
                                if ( !chartVolumeComposite.isDisposed()){
1885
                                        chartVolumeComposite.dispose();
1886
                                }        
1887
                        }
1888

    
1889
                        //Create Grid for Chart
1890
                        gridDataChart =new GridData(SWT.FILL, SWT.FILL, true, true);
1891
                        //gridDataChart.heightHint = 200;
1892
                        //Create Composite for Chart
1893
                        chartVolumeComposite= new ChartComposite(compositeZpoolConfig, SWT.BORDER, chartVolumeConfig, true); 
1894
                        chartVolumeComposite.setLayoutData(gridDataChart);
1895

    
1896
                        //Create Chart Used Space
1897
                        dataCharset.clear();
1898
                        log.debug(refUnit);
1899
                        float usedspace = zfs.convertInReferenceUnit(zfs.getZvol().zProperties.get("used").getValue(), refUnit);
1900
                        float usedspaceInPourcent = guiTrt.dataInPourcent(usedspace,realuseablespace);
1901
                        log.debug("usedspace :"+usedspace+" realuseablespace : "+realuseablespace+" usedspaceInPourcent "+usedspaceInPourcent);
1902
                        freespace = realuseablespace - usedspace;
1903
                        freespaceInPourcent =  guiTrt.dataInPourcent(freespace,realuseablespace);
1904
                        log.debug("freespace : "+freespace+" freespaceInPourcent :"+freespaceInPourcent);
1905
                        this.dataCharset.put("Used Space: "+ zfs.getZvol().zProperties.get("used").getValue(), usedspaceInPourcent);
1906
                        this.dataCharset.put("Free Space: "+BigDecimal.valueOf(freespace).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+refUnit, freespaceInPourcent  );
1907
                        //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()))) ;
1908
                        PieDataset datasetUsed = guiTrt.createDataset(dataCharset);  
1909
                        JFreeChart chartZpoolUsedSpace = guiTrt.createChart(datasetUsed, "Used Space on "+zfs.getZpool().zProperties.get("realuseablespace").getValue());
1910
                        if ( chartZpoolUsedComposite != null){
1911
                                if ( !chartZpoolUsedComposite.isDisposed()){
1912
                                        chartZpoolUsedComposite.dispose();
1913
                                }        
1914
                        }
1915

    
1916
                        //Create Grid for Chart
1917
                        gridDataChart =new GridData(SWT.FILL, SWT.FILL, true, true);
1918
                        gridDataChart.heightHint = 200;
1919
                        //gridDataChart.horizontalSpan = 2;
1920
                        //Create Composite for Chart
1921
                        chartZpoolUsedComposite= new ChartComposite(compositeZpoolConfig, SWT.BORDER, chartZpoolUsedSpace, true); 
1922
                        chartZpoolUsedComposite.setLayoutData(gridDataChart);
1923

    
1924

    
1925
                        compositeZpoolConfig.layout();        
1926
                }
1927

    
1928
        }
1929

    
1930
        private void  refreshDisks(){
1931
                zfs.getZpoolStatus();
1932
                for ( int cptL=0;cptL<labelsFieldDisks.size();cptL++){
1933
                        if ( !labelsFieldDisks.get(cptL).isDisposed()){
1934
                                labelsFieldDisks.get(cptL).dispose();        
1935
                        }
1936
                }
1937
                for ( int cptL=0;cptL<labelsFieldZRaid.size();cptL++){
1938
                        if ( !labelsFieldZRaid.get(cptL).isDisposed()){
1939
                                labelsFieldZRaid.get(cptL).dispose();        
1940
                        }
1941
                }
1942

    
1943
                if ( groupDisks != null && !groupDisks.isDisposed()){
1944
                        groupDisks.dispose();
1945
                }
1946
                groupDisks = new Group(compositeDisks,SWT.NONE);
1947
                groupDisks.setBackground(groupBackgroundColor);
1948
                groupDisks.setLayout(new GridLayout());
1949

    
1950
                GridData gridDataDisks=new GridData(SWT.FILL, SWT.FILL, true, true);
1951
                gridDataDisks.horizontalSpan=6;
1952
                groupDisks.setLayoutData(gridDataDisks);
1953

    
1954
                if (scrolledDisks != null && !scrolledDisks.isDisposed()){
1955
                        scrolledDisks.isDisposed();
1956
                }
1957
                scrolledDisks=new ScrolledComposite(groupDisks,SWT.V_SCROLL);
1958
                scrolledDisks.setLayoutData(new GridData(GridData.FILL_BOTH));
1959

    
1960
                if (compositeWidgetDisks != null && !compositeWidgetDisks.isDisposed()){
1961
                        compositeWidgetDisks.isDisposed();
1962
                }
1963
                compositeWidgetDisks=new Composite(scrolledDisks,SWT.NONE);
1964
                compositeWidgetDisks.setBackground(compositeBackgroundColor);
1965
                GridLayout gridLayoutWidgetDisks = new GridLayout();
1966
                gridLayoutWidgetDisks.numColumns =6;
1967
                compositeWidgetDisks.setLayout(gridLayoutWidgetDisks);
1968

    
1969
                GridData gridDataTitleDisks = new GridData(GridData.FILL, GridData.CENTER, true, false);
1970
                gridDataTitleDisks.horizontalSpan = 6;
1971
                if (compositeWidgetDisks != null && !compositeWidgetDisks.isDisposed()){
1972
                        compositeWidgetDisks.isDisposed();
1973
                }
1974
                Label lblTitleInfoDisks = new Label(compositeWidgetDisks, SWT.CENTER|SWT.BORDER);
1975
                lblTitleInfoDisks.setLayoutData(gridDataTitleDisks);
1976
                lblTitleInfoDisks.setFont(fontTitle);
1977
                lblTitleInfoDisks.setBackground(labelTitleBackgroundColor);
1978
                lblTitleInfoDisks.setText("ZFS Informations Disks");
1979

    
1980
                String[] keysPropHashDisks = (String[]) zfs.getHashDisks().keySet().toArray(new String[0]);
1981
                Arrays.sort(keysPropHashDisks);
1982
                String[] keysPropHashZraid = (String[]) zfs.getHashZRaid().keySet().toArray(new String[0]);
1983
                Arrays.sort(keysPropHashZraid);
1984
                //Arrays.sort(keysPropHashZraid);
1985
                for (int cptZraid=0;cptZraid<zfs.getHashZRaid().size();cptZraid++){
1986

    
1987
                        String keyPropHashZraid = keysPropHashZraid[cptZraid];
1988
                        GridData gridDataLabelZraid = new GridData(GridData.FILL, GridData.CENTER, true, false);
1989
                        gridDataLabelZraid.horizontalSpan=6;
1990
                        if (zfs.getZpool().zProperties.get("name").getValue().equalsIgnoreCase(zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("poolname").getValue())){
1991
                                //                        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());
1992
                                if ( !"".equals(zfs.getHashZRaid().get(keyPropHashZraid).zProperties.get("raidid").getValue())){
1993
                                        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();
1994
                                        labelsFieldZRaid.add(new Label(compositeWidgetDisks, SWT.BORDER|SWT.CENTER));
1995
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setLayoutData(gridDataLabelZraid);
1996
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setFont(fontSubTitle);
1997
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setBackground(labelFieldBackgroundColor);
1998
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setText(labelTextZraid);
1999
                                        labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setData(labelTextZraid);
2000
                                }
2001

    
2002

    
2003
                                for (int cpt=0;cpt<keysPropHashDisks.length;cpt++){
2004
                                        //log.debug("RefreshDisks "+keysPropHashDisks[cpt] );
2005
                                        String keyPropHashDisks = keysPropHashDisks[cpt];
2006
                                        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())){
2007

    
2008
                                                labelsFieldDisks.add(new Label(compositeWidgetDisks, SWT.NONE));
2009
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2010
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setFont(fontWidget);
2011
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setBackground(labelFieldBackgroundColor);
2012

    
2013
                                                if (!"0".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("errorread").getValue()) ||
2014
                                                                !"0".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("errorwrite").getValue()) ||
2015
                                                                !"0".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("errorchecksum").getValue())||
2016
                                                                (!"".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("smarthealthstatus").getValue()) && 
2017
                                                                                !"OK".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get("smarthealthstatus").getValue()))
2018
                                                                ){
2019
                                                        labelsFieldDisks.get(labelsFieldDisks.size()-1).setImage(imageHardDiskOffline);        
2020
                                                }else{
2021
                                                        labelsFieldDisks.get(labelsFieldDisks.size()-1).setImage(imageHardDiskOnline);
2022
                                                }
2023

    
2024
                                                //labelsFieldZRaid.get(labelsFieldZRaid.size()-1).setData(labelTextZraid);
2025
                                                String[] keysProp = (String[]) zfs.getHashDisks().get(keyPropHashDisks).zProperties.keySet().toArray(new String[0]);
2026
                                                Arrays.sort(keysProp);
2027
                                                String valueProp="";
2028

    
2029
                                                for (int i = 0; i < keysProp.length; i++) {
2030
                                                        keyProp = keysProp[i];
2031
                                                        if ( "noupdateable".equalsIgnoreCase(zfs.getHashDisks().get(keyPropHashDisks).zProperties.get(keyProp).getType()) ){
2032
                                                                valueProp = valueProp+zfs.getHashDisks().get(keyPropHashDisks).zProperties.get(keyProp).getLabelProperty()+" :"+zfs.getHashDisks().get(keyPropHashDisks).zProperties.get(keyProp).getValue()+"\n";
2033
                                                        }
2034
                                                }        
2035
                                                labelsFieldDisks.get(labelsFieldDisks.size()-1).setToolTipText(valueProp);        
2036
                                                //log.debug(valueProp);
2037
                                        }
2038

    
2039
                                }        
2040
                        }
2041

    
2042
                }
2043
                scrolledDisks.setContent(compositeWidgetDisks);
2044
                scrolledDisks.setExpandVertical(true);
2045
                scrolledDisks.setExpandHorizontal(true);
2046
                scrolledDisks.setMinSize(compositeWidgetDisks.computeSize(SWT.DEFAULT,SWT.DEFAULT));
2047

    
2048
                scrolledDisks.layout();
2049
                groupDisks.layout();
2050
                compositeWidgetDisks.layout();
2051
                compositeDisks.layout();
2052
                tabFolderConfig.layout();
2053

    
2054
        }
2055

    
2056

    
2057
        private void  refreshCreateZfsVolFS(){
2058

    
2059
                String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
2060
                Arrays.sort(keysProp);
2061
                log.debug("Label SIze "+labelsFieldCreateVol.size());
2062
                for ( int cptL=0;cptL<labelsFieldCreateVol.size();cptL++){
2063
                        labelsFieldCreateVol.get(cptL).dispose();        
2064

    
2065
                }
2066
                for ( int cptL=0;cptL<textsFieldCreateVol.size();cptL++){
2067
                        textsFieldCreateVol.get(cptL).dispose();        
2068
                }
2069
                for ( int cptL=0;cptL<combosFieldCreateVol.size();cptL++){
2070
                        combosFieldCreateVol.get(cptL).dispose();        
2071
                }
2072
                labelsFieldCreateVol.clear();
2073
                textsFieldCreateVol.clear();
2074
                combosFieldCreateVol.clear();
2075
                if (btnCreateZfsVolFS!=null && !btnCreateZfsVolFS.isDisposed()){
2076
                        btnCreateZfsVolFS.dispose();
2077
                }
2078
                if (groupCreateVolFS !=null && !groupCreateVolFS.isDisposed()){
2079
                        groupCreateVolFS.dispose();
2080
                }
2081
                if (scrolledCreateVol !=null &&!scrolledCreateVol.isDisposed()){
2082
                        scrolledCreateVol.dispose();
2083
                }
2084
                if (compositeWidgetCreateVolFS!=null && !compositeWidgetCreateVolFS.isDisposed()){
2085
                        compositeWidgetCreateVolFS.dispose();
2086
                }
2087

    
2088

    
2089

    
2090

    
2091
                groupCreateVolFS=new Group(compositeCreateVolFS,SWT.NONE);
2092
                groupCreateVolFS.setBackground(groupBackgroundColor);
2093
                groupCreateVolFS.setLayout(new GridLayout());
2094
                //GridData gridData=new GridData(GridData.FILL_HORIZONTAL);
2095
                GridData gridData=new GridData(SWT.FILL, SWT.FILL, true, true);
2096
                //gridData.heightHint=450;
2097
                groupCreateVolFS.setLayoutData(gridData);
2098
                scrolledCreateVol=new ScrolledComposite(groupCreateVolFS,SWT.V_SCROLL);
2099
                scrolledCreateVol.setLayoutData(new GridData(GridData.FILL_BOTH));
2100
                compositeWidgetCreateVolFS=new Composite(scrolledCreateVol,SWT.NONE);
2101
                compositeWidgetCreateVolFS.setBackground(compositeBackgroundColor);
2102
                GridLayout gridLayoutPane = new GridLayout();
2103
                gridLayoutPane.numColumns =2;
2104
                compositeWidgetCreateVolFS.setLayout(gridLayoutPane);
2105

    
2106
                GridData gridDataTitle = new GridData(GridData.FILL, GridData.CENTER, true, false);
2107
                gridDataTitle.horizontalSpan = 2;
2108
                Label lblTitle = new Label(compositeWidgetCreateVolFS, SWT.CENTER|SWT.BORDER);
2109
                lblTitle.setLayoutData(gridDataTitle);
2110
                lblTitle.setFont(fontTitle);
2111
                lblTitle.setBackground(labelTitleBackgroundColor);
2112
                lblTitle.setText("Create a ZFS Volume or ZFS FileSystem");
2113

    
2114

    
2115

    
2116
                labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2117
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2118
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2119
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get("type").getLabelProperty());
2120
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("type").getNameProperty());
2121

    
2122
                combosFieldCreateVol.add(new Combo(compositeWidgetCreateVolFS, SWT.NONE));
2123
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2124
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("type").getNameProperty());
2125
                String[] keysPermitValue = (String[]) zfs.getZvol().zProperties.get("type").getPermitValue().keySet().toArray(new String[0]);
2126
                for (int cpt=0;cpt <zfs.getZvol().zProperties.get("type").getPermitValue().size();cpt++){
2127
                        String keyPermitValue = keysPermitValue[cpt];
2128
                        combosFieldCreateVol.get(combosFieldCreateVol.size()-1).add(zfs.getZvol().zProperties.get("type").getPermitValue().get(keyPermitValue).toString());
2129
                }
2130

    
2131
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get("type").getValue());
2132
                //zfs.getZvol().zProperties.get("type").setValue(zfs.getZvol().zProperties.get("type").getPermitValue().get("volume").toString());
2133
                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).addListener(SWT.Selection, new Listener() {
2134

    
2135
                        public void handleEvent(final Event event) {
2136
                                final Combo comboType = (Combo) event.widget;
2137

    
2138

    
2139
                                zfs.getZvol().zProperties.get("type").setValue(comboType.getText());
2140
                                refreshCreateZfsVolFS();
2141
                                compositeWidgetCreateVolFS.layout();
2142
                                compositeCreateVolFS.layout();
2143

    
2144
                                log.debug(combosFieldCreateVol.size());
2145
                        }
2146
                });
2147

    
2148
                labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2149
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2150
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2151
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get("name").getLabelProperty());
2152
                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("name").getNameProperty());
2153

    
2154
                textsFieldCreateVol.add(new Text(compositeWidgetCreateVolFS, SWT.WRAP|SWT.BORDER));
2155
                textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2156
                textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get("name").getNameProperty());
2157
                textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setText("");
2158

    
2159
                for (int i = 0; i < keysProp.length; i++) {
2160
                        keyProp = keysProp[i];
2161
                        log.debug(keyProp);
2162
                        if ( ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2163
                                        ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2164
                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf())) ) ||
2165
                                                        ("filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2166
                                                                        ("fs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2167
                                                                                        "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) ) )                
2168
                                                                                        || ("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()))
2169

    
2170
                                        ){
2171
                                log.debug("DEBUG : "+ keyProp+ " "+zfs.getZvol().zProperties.get(keyProp).getType());
2172
                                if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) ||keyProp =="volblocksize"){
2173
                                        labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2174
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2175
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2176
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getLabelProperty());
2177
                                        labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2178

    
2179
                                        textsFieldCreateVol.add(new Text(compositeWidgetCreateVolFS, SWT.WRAP|SWT.BORDER));
2180
                                        textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2181
                                        textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2182
                                        textsFieldCreateVol.get(textsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2183

    
2184
                                }else{
2185

    
2186
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) && !"type".equals(keyProp)){
2187
                                                labelsFieldCreateVol.add(new Label(compositeWidgetCreateVolFS, SWT.NONE));
2188
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2189
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setBackground(labelFieldBackgroundColor);
2190
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getLabelProperty());
2191
                                                labelsFieldCreateVol.get(labelsFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2192

    
2193
                                                combosFieldCreateVol.add(new Combo(compositeWidgetCreateVolFS, SWT.NONE));
2194
                                                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2195
                                                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setData(zfs.getZvol().zProperties.get(keyProp).getNameProperty());
2196
                                                combosFieldCreateVol.get(combosFieldCreateVol.size()-1).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2197
                                                keysPermitValue = (String[]) zfs.getZvol().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
2198
                                                for (int cpt=0;cpt <zfs.getZvol().zProperties.get(keyProp).getPermitValue().size();cpt++){
2199
                                                        String keyPermitValue = keysPermitValue[cpt];
2200
                                                        combosFieldCreateVol.get(combosFieldCreateVol.size()-1).add(zfs.getZvol().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
2201
                                                }
2202
                                        }
2203

    
2204
                                }
2205

    
2206
                        }
2207

    
2208
                }
2209

    
2210

    
2211
                scrolledCreateVol.setContent(compositeWidgetCreateVolFS);
2212
                scrolledCreateVol.setExpandVertical(true);
2213
                scrolledCreateVol.setExpandHorizontal(true);
2214
                scrolledCreateVol.setMinSize(compositeWidgetCreateVolFS.computeSize(SWT.DEFAULT,SWT.DEFAULT));
2215

    
2216

    
2217
                if (groupActiveIscsi!=null && !groupActiveIscsi.isDisposed() ){
2218
                        groupActiveIscsi.dispose();
2219
                }
2220
                if  ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2221
                        groupActiveIscsi=new Group(compositeCreateVolFS,SWT.NONE);
2222
                        groupActiveIscsi.setBackground(groupBackgroundColor);
2223
                        groupActiveIscsi.setLayout(new GridLayout());
2224
                        GridLayout gridLayoutActiveIscsi = new GridLayout();
2225
                        gridLayoutActiveIscsi.numColumns =2;
2226
                        groupActiveIscsi.setLayout(gridLayoutActiveIscsi);
2227
                        //GridData gridDataActiveIscsi=new GridData(GridData.FILL_HORIZONTAL);
2228
                        GridData gridDataActiveIscsi=new GridData(SWT.FILL, SWT.FILL, true, true);
2229
                        //gridDataActiveIscsi.heightHint=200;
2230
                        groupActiveIscsi.setLayoutData(gridDataActiveIscsi);
2231

    
2232
                        GridData gridDataTitleIscsi = new GridData(GridData.FILL, GridData.CENTER, true, false);
2233
                        gridDataTitleIscsi.horizontalSpan = 2;
2234
                        //Iscsi Section
2235
                        Label lblTitleIscsi = new Label(groupActiveIscsi, SWT.CENTER|SWT.BORDER);
2236
                        lblTitleIscsi.setLayoutData(gridDataTitleIscsi);
2237
                        lblTitleIscsi.setFont(fontTitle);
2238
                        lblTitleIscsi.setBackground(labelTitleBackgroundColor);
2239
                        lblTitleIscsi.setText("ISCSI Parameters");
2240
                        keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
2241
                        Arrays.sort(keysProp);
2242
                        labelsFieldCreateIscsi.clear();
2243
                        textsFieldCreateIscsi.clear();
2244
                        combosFieldCreateIscsi.clear();
2245
                        for (int i = 0; i < keysProp.length; i++) {
2246
                                keyProp = keysProp[i];
2247

    
2248

    
2249
                                if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2250
                                        Label lbl = new Label(groupActiveIscsi, SWT.NONE);
2251
                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2252
                                        lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
2253
                                        lbl.setFont(fontWidget);
2254
                                        lbl.setBackground(labelFieldBackgroundColor);
2255
                                        labelsFieldCreateIscsi.add(new Label(groupActiveIscsi, SWT.NONE));
2256
                                        labelsFieldCreateIscsi.get(labelsFieldCreateIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2257
                                        labelsFieldCreateIscsi.get(labelsFieldCreateIscsi.size()-1).setBackground(labelFieldBackgroundColor);
2258
                                        //labelsField.get(labelsField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2259
                                        labelsFieldCreateIscsi.get(labelsFieldCreateIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2260
                                }else{
2261
                                        if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
2262
                                                Label lbl = new Label(groupActiveIscsi, SWT.NONE);
2263
                                                lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2264
                                                lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
2265
                                                lbl.setFont(fontWidget);
2266
                                                lbl.setBackground(labelFieldBackgroundColor);
2267

    
2268
                                                textsFieldCreateIscsi.add(new Text(groupActiveIscsi, SWT.WRAP|SWT.BORDER));
2269
                                                textsFieldCreateIscsi.get(textsFieldCreateIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2270
                                                textsFieldCreateIscsi.get(textsFieldCreateIscsi.size()-1).setBackground(textFieldBackgroundColor);
2271
                                                //textsField.get(textsField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2272
                                                textsFieldCreateIscsi.get(textsFieldCreateIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2273

    
2274
                                        }else{
2275

    
2276
                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())){
2277
                                                        Label lbl = new Label(groupActiveIscsi, SWT.NONE);
2278
                                                        lbl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2279
                                                        lbl.setText(zfs.getZiscsi().zProperties.get(keyProp).getLabelProperty());
2280
                                                        lbl.setFont(fontWidget);
2281
                                                        lbl.setBackground(labelFieldBackgroundColor);
2282

    
2283
                                                        combosFieldCreateIscsi.add(new Combo(groupActiveIscsi, SWT.NONE));
2284
                                                        combosFieldCreateIscsi.get(combosFieldCreateIscsi.size()-1).setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
2285
                                                        combosFieldCreateIscsi.get(combosFieldCreateIscsi.size()-1).setData(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2286
                                                        //combosField.get(combosField.size()-1).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2287
                                                        keysPermitValue = (String[]) zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().keySet().toArray(new String[0]);
2288
                                                        for (int cpt=0;cpt <zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().size();cpt++){
2289
                                                                String keyPermitValue = keysPermitValue[cpt];
2290
                                                                combosFieldCreateIscsi.get(combosFieldCreateIscsi.size()-1).add(zfs.getZiscsi().zProperties.get(keyProp).getPermitValue().get(keyPermitValue).toString());
2291
                                                        }
2292
                                                }
2293
                                        }
2294

    
2295
                                }
2296
                                log.debug("DEBUG : "+ keyProp+ " "+zfs.getZiscsi().zProperties.get(keyProp).getType());
2297

    
2298
                        }
2299

    
2300
                }
2301
                btnCreateZfsVolFS = new Button(compositeCreateVolFS, SWT.None);
2302
                GridData gridDataBtnCreateZfsVolFS = new GridData(GridData.FILL, GridData.CENTER, true, false);
2303
                gridDataBtnCreateZfsVolFS.horizontalSpan = 2;
2304
                btnCreateZfsVolFS.setLayoutData(gridDataBtnCreateZfsVolFS);
2305
                btnCreateZfsVolFS.setText("Create Now");
2306
                btnCreateZfsVolFS.addListener(SWT.Selection, new Listener() {
2307

    
2308
                        public void handleEvent(final Event event) {
2309

    
2310
                                for (int indText=0;indText<textsFieldCreateVol.size();indText++){
2311
                                        if (textsFieldCreateVol.get(indText).getData().toString().equals("name")){
2312
                                                zfs.getZvol().zProperties.get("name").setValue(textsFieldCreateVol.get(indText).getText());
2313
                                        }
2314
                                }
2315
                                if (! zfs.getZvol().zProperties.get("name").getValue().equalsIgnoreCase("") ){
2316
                                        String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
2317
                                        Arrays.sort(keysProp);
2318
                                        for (int i = 0; i < keysProp.length; i++) {
2319
                                                keyProp = keysProp[i];
2320
                                                log.debug(keyProp);
2321
                                                if ( ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2322
                                                                ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2323
                                                                                "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf())) ) ||
2324
                                                                                ("filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && 
2325
                                                                                                ("fs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) || 
2326
                                                                                                                "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()) ) )                
2327
                                                                                                                || ("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue()) && "volandfs".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getPropertyOf()))
2328

    
2329
                                                                ){
2330
                                                        log.debug("DEBUG : "+ keyProp+ " "+zfs.getZvol().zProperties.get(keyProp).getType());
2331
                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) ||keyProp =="volblocksize"){
2332
                                                                for (int indText=0;indText<textsFieldCreateVol.size();indText++){
2333
                                                                        if ( textsFieldCreateVol.get(indText).getData().equals(keyProp) ){
2334
                                                                                zfs.getZvol().zProperties.get(keyProp).setValue(textsFieldCreateVol.get(indText).getText());
2335
                                                                        }
2336
                                                                }
2337
                                                        }else{
2338

    
2339
                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType()) && !"type".equals(keyProp)){
2340
                                                                        for (int indCombo=0;indCombo<combosFieldCreateVol.size();indCombo++){
2341
                                                                                if ( combosFieldCreateVol.get(indCombo).getData().equals(keyProp) ){
2342
                                                                                        zfs.getZvol().zProperties.get(keyProp).setValue(combosFieldCreateVol.get(indCombo).getText());
2343
                                                                                }
2344
                                                                        }
2345
                                                                }
2346
                                                        }
2347
                                                }
2348
                                        }
2349

    
2350
                                        thrCreateZFSVol = new Thread(new Runnable(){
2351
                                                public void run() {
2352
                                                        Display.getDefault().syncExec(new Runnable() {
2353
                                                                public void run() {
2354
                                                                        if (wPB.s.isDisposed()){
2355
                                                                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
2356
                                                                                wPB.open();
2357
                                                                        }else{
2358
                                                                                wPB.open();
2359
                                                                        }
2360

    
2361

    
2362
                                                                }
2363
                                                        });
2364

    
2365
                                                        zfs.zfsCreateVolFS();
2366
                                                        Display.getDefault().syncExec(new Runnable(){
2367
                                                                public void run(){
2368
                                                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
2369
                                                                        //String[] keysProp = (String[]) zfs.getZserver().zProperties.keySet().toArray(new String[0]);
2370
                                                                        Arrays.sort(keysPropError);
2371
                                                                        String textBox = "";
2372
                                                                        for (int i = 0; i < keysPropError.length; i++) {
2373
                                                                                String keyPropError = keysPropError[i];
2374
                                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
2375
                                                                        }
2376
                                                                        if (keysPropError.length>0){
2377
                                                                                MessageBox messageBoxInfo = new MessageBox(shell, SWT.DIALOG_TRIM);
2378
                                                                                messageBoxInfo.setText("Warning");
2379
                                                                                messageBoxInfo.setMessage(textBox);
2380
                                                                                messageBoxInfo.open();
2381
                                                                                wPB.close();
2382
                                                                        }else{
2383
                                                                                if ("volume".equals(zfs.getZvol().zProperties.get("type").getValue())||
2384
                                                                                                "snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
2385

    
2386
                                                                                        String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
2387
                                                                                        Arrays.sort(keysProp);
2388

    
2389
                                                                                        for (int i = 0; i < keysProp.length; i++) {
2390
                                                                                                keyProp = keysProp[i];
2391
                                                                                                log.debug("btnCreateIscsi :"+keyProp);
2392
                                                                                                if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2393
                                                                                                        for (int indLabel=0;indLabel<labelsFieldCreateIscsi.size();indLabel++){
2394
                                                                                                                if ( labelsFieldCreateIscsi.get(indLabel).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2395
                                                                                                                        zfs.getZiscsi().zProperties.get(keyProp).setValue(labelsFieldCreateIscsi.get(indLabel).getText());
2396
                                                                                                                }
2397
                                                                                                        }
2398
                                                                                                }else{
2399
                                                                                                        if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2400
                                                                                                                for (int indText=0;indText<textsFieldCreateIscsi.size();indText++){
2401
                                                                                                                        if ( textsFieldCreateIscsi.get(indText).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2402
                                                                                                                                zfs.getZiscsi().zProperties.get(keyProp).setValue(textsFieldCreateIscsi.get(indText).getText());
2403
                                                                                                                        }
2404
                                                                                                                }
2405

    
2406
                                                                                                        }else{
2407

    
2408
                                                                                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2409
                                                                                                                        for (int indList=0;indList<combosFieldCreateIscsi.size();indList++){
2410
                                                                                                                                log.debug("first loop"+combosFieldCreateIscsi.get(indList).getData()+" "+zfs.getZiscsi().zProperties.get(keyProp).getNameProperty());
2411

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

    
2443

    
2444
                                                                                int indRoot=0;
2445
                                                                                int indItem=0;
2446
                                                                                for (int indT=0;indT<tree.getItemCount();indT++){
2447
                                                                                        if (tree.getItem(indT).getData().toString().equals(zfs.getZserver().zProperties.get("serverIP").getValue())){
2448
                                                                                                for (int indTreeVolFS=0;indTreeVolFS<tree.getItem(indT).getItemCount();indTreeVolFS++){
2449
                                                                                                        if (tree.getItem(indT).getItem(indTreeVolFS).getData().toString().compareTo(zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue()) >0){
2450
                                                                                                                if (zfs.getError().size()>0){
2451
                                                                                                                        updateItemTreeZfsList(false, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2452
                                                                                                                }else{
2453
                                                                                                                        updateItemTreeZfsList(true, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2454
                                                                                                                }
2455
                                                                                                                indRoot=indT;
2456
                                                                                                                indItem=indTreeVolFS;
2457
                                                                                                                break;
2458
                                                                                                        }
2459
                                                                                                }
2460
                                                                                                if ( indItem==0){
2461
                                                                                                        int indTreeVolFS=tree.getItem(indT).getItemCount();
2462
                                                                                                        if (zfs.getError().size()>0){
2463
                                                                                                                updateItemTreeZfsList(false, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2464
                                                                                                        }else{
2465
                                                                                                                updateItemTreeZfsList(true, zfs.getZpool().zProperties.get("name").getValue()+"/"+zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), null ,indTreeVolFS);
2466
                                                                                                        }
2467
                                                                                                        indRoot=indT;
2468
                                                                                                        indItem=indTreeVolFS;
2469
                                                                                                }
2470
                                                                                                tree.layout();
2471
                                                                                        }
2472
                                                                                }
2473

    
2474
                                                                                log.debug("Create Vol ISCI "+zfs.getZvol().zProperties.get("type").getValue());
2475
                                                                                compositeTabVolConfig.layout();
2476
                                                                                wPB.close();
2477

    
2478
                                                                                refreshCreateZfsVolFS();
2479
                                                                        }
2480
                                                                }
2481
                                                        });
2482
                                                }
2483
                                        });
2484
                                        thrCreateZFSVol.start();
2485
                                }
2486
                        }
2487
                });
2488
                compositeCreateVolFS.layout();
2489
        }
2490

    
2491
        private void refreshIscsiSession(){
2492

    
2493

    
2494
                zfs.getIscsiListConfigVol(zfs.getZvol().zProperties.get("name").getValue());        
2495
                log.debug("refreshIscsiSesiont : "+zfs.getZiscsi().zProperties.get("sid").getMultivalues().size());
2496

    
2497

    
2498

    
2499
                tableIscsiSession.removeAll();
2500
                for (int i=0;i<zfs.getZiscsi().zProperties.get("sid").getMultivalues().size();i++){
2501
                        TableItem item = new TableItem(tableIscsiSession, SWT.NONE);
2502
                        item.setText(0, zfs.getZiscsi().zProperties.get("sid").getMultivalues().get(i).toString());
2503
                        item.setText(1, zfs.getZiscsi().zProperties.get("sessionIP").getMultivalues().get(i).toString());
2504

    
2505
                }
2506
                String[] keysProp = (String[]) zfs.getZiscsi().zProperties.keySet().toArray(new String[0]);
2507
                Arrays.sort(keysProp);
2508

    
2509
                for (int i = 0; i < keysProp.length; i++) {
2510
                        keyProp = keysProp[i];
2511
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2512
                                for (int indLabel=0;indLabel<labelsFieldAddIscsi.size();indLabel++){
2513
                                        if ( labelsFieldAddIscsi.get(indLabel).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2514
                                                labelsFieldAddIscsi.get(indLabel).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2515
                                        }
2516
                                }
2517
                        }else{
2518
                                if ( "freeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2519
                                        for (int indText=0;indText<textsFieldAddIscsi.size();indText++){
2520
                                                if ( textsFieldAddIscsi.get(indText).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2521
                                                        textsFieldAddIscsi.get(indText).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2522
                                                }
2523
                                        }
2524

    
2525
                                }else{
2526

    
2527
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZiscsi().zProperties.get(keyProp).getType())) {
2528
                                                for (int indCombo=0;indCombo<combosFieldAddIscsi.size();indCombo++){
2529
                                                        if ( combosFieldAddIscsi.get(indCombo).getData().equals(zfs.getZiscsi().zProperties.get(keyProp).getNameProperty()) ){
2530
                                                                combosFieldAddIscsi.get(indCombo).setText(zfs.getZiscsi().zProperties.get(keyProp).getValue());
2531
                                                        }
2532
                                                }
2533
                                        }
2534
                                }
2535
                        }
2536
                }
2537
        }
2538

    
2539
        private void refreshConfigSnapshot(){
2540

    
2541
                zsnap = zfs;
2542
                zsnap.getZsnapshotConfig();
2543
                String[] keysProp = (String[]) zsnap.getZsnapshots().zSchedulerProperties.keySet().toArray(new String[0]);
2544
                Arrays.sort(keysProp);
2545

    
2546
                for (int i = 0; i < keysProp.length; i++) {
2547
                        keyProp = keysProp[i];
2548
                        if ( "noupdateable".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
2549
                                for (int indLabel=0;indLabel<labelsFieldSnapshots.size();indLabel++){
2550
                                        if ( labelsFieldSnapshots.get(indLabel).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2551
                                                labelsFieldSnapshots.get(indLabel).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2552
                                                log.debug("REFRESHConfig 1: ");
2553
                                        }
2554
                                }
2555
                        }else{
2556
                                if ( "freeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
2557
                                        for (int indText=0;indText<textsFieldSnapshots.size();indText++){
2558
                                                if ( textsFieldSnapshots.get(indText).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2559
                                                        textsFieldSnapshots.get(indText).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2560
                                                        log.debug("REFRESHConfig2 : ");
2561
                                                }
2562
                                        }
2563

    
2564
                                }else{
2565

    
2566
                                        if ( "nofreeentry".equalsIgnoreCase(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getType())) {
2567
                                                for (int indCombo=0;indCombo<listsFieldSnaphots.size();indCombo++){
2568
                                                        if ( listsFieldSnaphots.get(indCombo).getData().equals(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2569
                                                                //listsFieldSnaphots.get(indCombo).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2570
                                                                labelsFieldSnapshotsValue.get(indCombo).setText("Current values : "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2571
                                                                log.debug("REFRESHConfig3 : "+zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2572

    
2573
                                                        }
2574
                                                }
2575
                                        }
2576
                                }
2577
                        }
2578
                }
2579
        }
2580

    
2581
        private void refreshConfigReplica(){
2582

    
2583
                //zsnap = zfs;
2584
                zfs.getZreplicaConfig();
2585
                String[] keysProp = (String[]) zfs.getZreplicas().zSchedulerProperties.keySet().toArray(new String[0]);
2586
                Arrays.sort(keysProp);
2587

    
2588
                for (int i = 0; i < keysProp.length; i++) {
2589
                        keyProp = keysProp[i];
2590
                        if ( "noupdateable".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
2591
                                for (int indLabel=0;indLabel<labelsFieldReplica.size();indLabel++){
2592
                                        if ( labelsFieldReplica.get(indLabel).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2593
                                                labelsFieldReplica.get(indLabel).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2594
                                                log.debug("REFRESHConfig 1: ");
2595
                                        }
2596
                                }
2597
                        }else{
2598
                                if ( "freeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())) {
2599
                                        for (int indText=0;indText<textsFieldReplica.size();indText++){
2600
                                                if ( textsFieldReplica.get(indText).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2601
                                                        textsFieldReplica.get(indText).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2602
                                                        log.debug("REFRESHConfig2 : ");
2603
                                                }
2604
                                        }
2605

    
2606
                                }else{
2607

    
2608
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())&& zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() !=null) {
2609
                                                for (int indCombo=0;indCombo<listsFieldReplica.size();indCombo++){
2610
                                                        if ( listsFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2611
                                                                //listsFieldSnaphots.get(indCombo).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2612
                                                                labelsFieldReplicaValue.get(indCombo).setText("Current values : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2613
                                                                log.debug("REFRESHConfig3 : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2614

    
2615
                                                        }
2616
                                                }
2617
                                        }
2618
                                        if ( "nofreeentry".equalsIgnoreCase(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getType())&& zfs.getZreplicas().zSchedulerProperties.get(keyProp).getPermitValue() ==null) {
2619
                                                for (int indCombo=0;indCombo<combosFieldReplica.size();indCombo++){
2620

    
2621
                                                        if (keyProp.equalsIgnoreCase("server")){
2622
                                                                for (int indLabel=0;indLabel<labelsFieldReplica.size();indLabel++){
2623
                                                                        if ( labelsFieldReplica.get(indLabel).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2624
                                                                                labelsFieldReplica.get(indLabel).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2625
                                                                                log.debug("REFRESHConfig 1: ");
2626
                                                                        }
2627
                                                                }
2628

    
2629
                                                                if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2630
                                                                        combosFieldReplica.get(indCombo).removeAll();
2631
                                                                        String[] keysPropSrv = (String[]) zfs.getCacheSession().keySet().toArray(new String[0]);
2632
                                                                        Arrays.sort(keysPropSrv);
2633
                                                                        for (int cptSrv=0;cptSrv<keysPropSrv.length;cptSrv++){
2634
                                                                                String keyPropSrv=keysPropSrv[cptSrv];
2635
                                                                                combosFieldReplica.get(indCombo).add(keyPropSrv);
2636
                                                                        }
2637
                                                                        //listsFieldSnaphots.get(indCombo).setText(zsnap.getZsnapshots().zSchedulerProperties.get(keyProp).getValue());
2638
                                                                        //combosFieldReplica.get(indCombo).setText("Current values : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2639
                                                                        log.debug("REFRESHConfig3 : "+zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2640
                                                                        combosFieldReplica.get(indCombo).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2641
                                                                }
2642
                                                        }else{
2643
                                                                if ( combosFieldReplica.get(indCombo).getData().equals(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getNameProperty()) ){
2644
                                                                        combosFieldReplica.get(indCombo).setText(zfs.getZreplicas().zSchedulerProperties.get(keyProp).getValue());
2645
                                                                }
2646
                                                        }
2647
                                                }
2648

    
2649
                                        }
2650
                                }
2651
                        }
2652
                }
2653
        }
2654

    
2655

    
2656

    
2657
        private void refreshConfigVolume(){
2658

    
2659
                String[] keysProp = (String[]) zfs.getZvol().zProperties.keySet().toArray(new String[0]);
2660
                Arrays.sort(keysProp);
2661

    
2662
                if ( "snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())) {
2663
                        for (int i=0;i<keysProp.length;i++){
2664
                                keyProp = keysProp[i];
2665
                                for (int indLabel=0;indLabel<labelsField.size();indLabel++){
2666
                                        if ( labelsField.get(indLabel).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty()) ){
2667
                                                labelsField.get(indLabel).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2668
                                        }
2669
                                }
2670
                        }
2671
                }else{
2672
                        for (int i=0;i<keysProp.length;i++){
2673
                                keyProp = keysProp[i];
2674
                                if ( "noupdateable".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
2675
                                        for (int indLabel=0;indLabel<labelsField.size();indLabel++){
2676
                                                if ( labelsField.get(indLabel).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty())){
2677
                                                        labelsField.get(indLabel).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2678
                                                }
2679

    
2680
                                        }
2681
                                }else{
2682
                                        if ( "freeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
2683
                                                for (int indText=0;indText<textsField.size();indText++){
2684
                                                        if ( textsField.get(indText).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty()) ){
2685
                                                                textsField.get(indText).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2686
                                                        }
2687
                                                }
2688

    
2689
                                        }else{
2690

    
2691
                                                if ( "nofreeentry".equalsIgnoreCase(zfs.getZvol().zProperties.get(keyProp).getType())) {
2692
                                                        for (int indCombo=0;indCombo<combosField.size();indCombo++){
2693
                                                                if ( combosField.get(indCombo).getData().equals(zfs.getZvol().zProperties.get(keyProp).getNameProperty()) ){
2694
                                                                        combosField.get(indCombo).setText(zfs.getZvol().zProperties.get(keyProp).getValue());
2695
                                                                }
2696
                                                        }
2697
                                                }
2698
                                        }
2699
                                }
2700
                        }
2701
                        Button btnSaveChange = new Button(compositeConfig,SWT.WRAP|SWT.BORDER);
2702
                        GridData gridDataBtnSaveChanges = new GridData(GridData.FILL, GridData.CENTER, true, false);
2703
                        //gridDataChart.heightHint = 250;
2704
                        //gridDataChart.horizontalSpan = 2;
2705
                        btnSaveChange.setText("Save Changes");
2706
                        btnSaveChange.setLayoutData(gridDataBtnSaveChanges);
2707
                        Button btnDestroyVolFS = new Button(compositeConfig,SWT.WRAP|SWT.BORDER);
2708
                        GridData gridDataBtnDestroyVolFS = new GridData(GridData.FILL, GridData.CENTER, true, false);
2709
                        btnSaveChange.setEnabled(false);
2710
                        //gridDataChart.heightHint = 250;
2711
                        //gridDataChart.horizontalSpan = 2;
2712
                        btnDestroyVolFS.setText("Delete");
2713
                        btnDestroyVolFS.setLayoutData(gridDataBtnDestroyVolFS);
2714
                        btnDestroyVolFS.addListener(SWT.Selection, new Listener() {
2715

    
2716
                                public void handleEvent(final Event event) {
2717
                                        log.debug("btnDestroyVolFS.addListener :"+zfs.getZvol().zProperties.get("name").getValue()+" "+zfs.getZvol().zProperties.get("type").getValue());
2718
                                        destroyVolFS();
2719
                                }
2720
                        });
2721

    
2722
                        guiTrt=new guiTrt();
2723
                        //create Chart
2724
                        if ( "volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())) {
2725
                                guiTrt.formatChartValue(zfs.getZvol().zProperties.get("volsize").getValue(), zfs.getZvol().zProperties.get("usedbydataset").getValue(), zfs.getZvol().zProperties.get("usedbysnapshots").getValue());        
2726
                        }else{
2727
                                if ( "filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())) {
2728
                                        guiTrt.formatChartValue(zfs.getZvol().zProperties.get("available").getValue(), zfs.getZvol().zProperties.get("usedbydataset").getValue(), zfs.getZvol().zProperties.get("usedbysnapshots").getValue());
2729
                                }
2730
                        }
2731

    
2732
                        dataCharset.clear();
2733
                        this.dataCharset.put("Used By Data : "+zfs.getZvol().zProperties.get("usedbydataset").getValue(), guiTrt.getZfsUsedByData()) ;
2734
                        this.dataCharset.put("Used By Snapshots : "+zfs.getZvol().zProperties.get("usedbysnapshots").getValue(), guiTrt.getZfsUsedBySnapshots()) ;
2735
                        this.dataCharset.put("Free : "+BigDecimal.valueOf(guiTrt.getZfsFree()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+guiTrt.getUnit(), guiTrt.getZfsFreePourcent()) ;
2736
                        PieDataset dataset = guiTrt.createDataset(dataCharset);  
2737
                        JFreeChart chartVolumeConfig = guiTrt.createChart(dataset, "Total Volume size : "+zfs.getZvol().zProperties.get("volsize").getValue());
2738
                        if ( chartVolumeComposite != null){
2739
                                if ( !chartVolumeComposite.isDisposed()){
2740
                                        chartVolumeComposite.dispose();
2741
                                }        
2742
                        }
2743

    
2744
                        //Create Grid for Chart
2745
                        //gridDataChart = new GridData(GridData.FILL, GridData.CENTER, true, false);
2746
                        gridDataChart = new GridData(SWT.FILL, SWT.FILL, true, true);
2747
                        //gridDataChart.heightHint = 275;
2748
                        //gridDataChart.heightHint =compositeConfig.
2749
                        gridDataChart.horizontalSpan = 2;
2750
                        //Create Composite for Chart
2751
                        chartVolumeComposite= new ChartComposite(compositeConfig, SWT.BORDER, chartVolumeConfig, true); 
2752
                        chartVolumeComposite.setLayoutData(gridDataChart);
2753
                        chartVolumeComposite.layout();
2754
                        compositeConfig.layout();
2755
                }
2756

    
2757
        }
2758

    
2759
        public void updateItemTreeZfsList(Boolean statusIscsi, String itemData,  TreeItem rootTree, String infoUsedSize, int indexTree){
2760
                TreeItem root;
2761
                if (indexTree ==-1){
2762
                        root = new TreeItem(rootTree, SWT.None);
2763
                }else{
2764
                        root = new TreeItem(rootTree,SWT.None, indexTree);
2765
                }
2766
                root.setText(itemData+" ("+infoUsedSize+")");
2767

    
2768

    
2769
                if (statusIscsi){
2770
                        if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
2771
                                root.setImage(imageFSOnline);
2772
                        }else{
2773
                                root.setImage(imageStorageOnline);        
2774
                        }
2775

    
2776
                }else{
2777
                        if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
2778
                                root.setImage(imageFSOffline);
2779
                        }else{
2780
                                root.setImage(imageStorageOffline);        
2781
                        }
2782

    
2783
                }
2784
                root.setData(itemData);        
2785
                //Set Object Zvol to empty
2786
                zfs.setZvol();        
2787
                zfs.setZiscsi();
2788
        }
2789

    
2790

    
2791
        public void actionClickTree(Event evt){
2792
                final TreeItem root = (TreeItem) evt.item;
2793
                strItemServer ="";
2794
                strItemZvolFS="";
2795
                countItem=0;
2796
                thrGetallZvol = new Thread(new Runnable() {
2797

    
2798
                        public void run() {
2799
                                Display.getDefault().syncExec(new Runnable() {
2800
                                        public void run() {
2801
                                                wPB.open();
2802

    
2803
                                        }
2804
                                });
2805

    
2806

    
2807
                                Display.getDefault().syncExec(new Runnable() {
2808
                                        public void run() {
2809

    
2810
                                                if ( root.getParentItem() != null){
2811

    
2812
                                                        final TreeItem parentRoot = root.getParentItem();
2813
                                                        if ( parentRoot.getParentItem() != null){
2814
                                                                strItemServer=parentRoot.getParentItem().getData().toString();
2815

    
2816
                                                        }else{
2817
                                                                strItemServer=root.getParentItem().getData().toString();
2818

    
2819
                                                        }
2820

    
2821
                                                        strItemZvolFS=root.getData().toString();
2822
                                                        log.debug(strItemZvolFS);
2823
                                                        countItem=root.getItemCount();
2824
                                                        if (countItem <1){
2825
                                                                root.clearAll(true);
2826
                                                                root.setItemCount(0);
2827
                                                        }
2828
                                                }
2829
                                        }
2830
                                });
2831
                                if (!strItemServer.equalsIgnoreCase("")){
2832
                                        zfs.getServer(strItemServer);
2833
                                        zfs.zfsGetAllVolume(strItemZvolFS);
2834

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

    
2838
                                                Display.getDefault().syncExec(new Runnable() {
2839
                                                        public void run() {
2840

    
2841
                                                                for (int i = 0; i < zlistSnapshots.size(); i++) {
2842
                                                                        TreeItem item = new TreeItem(root, 0);
2843
                                                                        item.setText(zlistSnapshots.get(i).toString());
2844
                                                                        item.setData(zlistSnapshots.get(i).toString());
2845
                                                                        if ( zfs.getIscsiListConfigVol(zlistSnapshots.get(i).toString()) && ! "".equalsIgnoreCase(zfs.getZiscsi().zProperties.get("tid").getValue())){
2846
                                                                                item.setImage(imageSnapshotOnline);
2847
                                                                        }else{
2848
                                                                                item.setImage(imageSnapshotOffline);
2849
                                                                        }
2850

    
2851
                                                                }
2852
                                                        }
2853
                                                });
2854
                                        }
2855

    
2856
                                        Display.getDefault().syncExec(new Runnable(){
2857
                                                public void run(){
2858
                                                        if ( !tbtmConfig.isDisposed()){
2859
                                                                tbtmConfig.dispose();
2860
                                                                tabFolderConfig.layout();
2861
                                                        }
2862
                                                        createTabItemVolConfig();
2863
                                                        refreshConfigVolume();
2864

    
2865

    
2866
                                                        if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
2867
                                                                if (tbtmSnapshot.isDisposed()){
2868
                                                                        createTabItemSnapshot();
2869
                                                                }
2870
                                                                refreshConfigSnapshot();
2871

    
2872
                                                        }else{
2873
                                                                if ( !tbtmSnapshot.isDisposed()){
2874
                                                                        tbtmSnapshot.dispose();        
2875
                                                                }
2876

    
2877
                                                        }
2878
                                                        tabFolderConfig.setSelection(tbtmConfig);
2879
                                                        refreshIscsiSession();
2880
                                                        refreshConfigReplica();
2881
                                                        tabFolderConfig.layout();
2882
                                                        wPB.close();
2883
                                                        menuTreeZFS();
2884
                                                        tree.setMenu(treeZFSMenu);
2885

    
2886

    
2887
                                                }
2888
                                        });
2889

    
2890
                                }
2891
                        }
2892
                });
2893

    
2894
                thrGetallZvol.start();
2895
        }
2896

    
2897

    
2898
        public void menuTreeZFS(){
2899
                if (treeZFSMenu != null && !treeZFSMenu.isDisposed()){
2900
                        treeZFSMenu.dispose();
2901
                }
2902
                treeZFSMenu = new Menu(shell, SWT.POP_UP);
2903
                MenuItem refreshZFSMenu = new MenuItem(treeZFSMenu, SWT.PUSH);
2904
                refreshZFSMenu.setText("Refresh"); 
2905
                refreshZFSMenu.addListener(SWT.Selection, new Listener() {
2906
                        public void handleEvent(final Event event) {
2907

    
2908
                                tree.getSelection()[0].removeAll();
2909
                                wPB = new guiProgress(shell.getDisplay(), shell.getLocation().x, shell.getLocation().y);
2910
                                TreeItem itemSelected = tree.getSelection()[0];
2911
                                while (itemSelected.getParentItem()!=null){
2912
                                        itemSelected=itemSelected.getParentItem();
2913
                                }
2914
                                itemSelected.removeAll();
2915
                                refreshTreeZFSList(itemSelected);
2916

    
2917

    
2918
                        }
2919
                });
2920

    
2921
                if ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())||
2922
                                "filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2923
                        MenuItem snapshotVolFS = new MenuItem(treeZFSMenu, SWT.PUSH);
2924
                        snapshotVolFS.setText("Launch Snapshoting"); 
2925
                        snapshotVolFS.addListener(SWT.Selection, new Listener() {
2926
                                public void handleEvent(final Event event) {
2927
                                        zfs.zfsSnapshots();
2928
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
2929

    
2930
                                        Arrays.sort(keysPropError);
2931
                                        String textBox = "";
2932
                                        for (int i = 0; i < keysPropError.length; i++) {
2933
                                                String keyPropError = keysPropError[i];
2934
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
2935
                                        }
2936
                                        if (keysPropError.length>0){
2937
                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
2938
                                                messageBoxError.setText("Warning");
2939
                                                messageBoxError.setMessage(textBox);
2940
                                                messageBoxError.open();
2941
                                        }
2942
                                }
2943
                        });        
2944
                        
2945
                        MenuItem replicaVol = new MenuItem(treeZFSMenu, SWT.PUSH);
2946
                        replicaVol.setText("Launch Replication"); 
2947
                        replicaVol.addListener(SWT.Selection, new Listener() {
2948
                                public void handleEvent(final Event event) {
2949
                                        zfs.zfsReplicas();
2950
                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
2951

    
2952
                                        Arrays.sort(keysPropError);
2953
                                        String textBox = "";
2954
                                        for (int i = 0; i < keysPropError.length; i++) {
2955
                                                String keyPropError = keysPropError[i];
2956
                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
2957
                                        }
2958
                                        if (keysPropError.length>0){
2959
                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
2960
                                                messageBoxError.setText("Warning");
2961
                                                messageBoxError.setMessage(textBox);
2962
                                                messageBoxError.open();
2963
                                        }
2964
                                }
2965
                        });        
2966
                }
2967

    
2968
                if ("volume".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())||
2969
                                "filesystem".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())||
2970
                                "snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2971

    
2972
                        MenuItem removeVolFS = new MenuItem(treeZFSMenu, SWT.PUSH);
2973
                        removeVolFS.setText("Remove "+zfs.getZvol().zProperties.get("name").getValue()); 
2974
                        removeVolFS.addListener(SWT.Selection, new Listener() {
2975
                                public void handleEvent(final Event event) {
2976
                                        destroyVolFS();
2977
                                }
2978
                        });
2979
                }
2980
                if("snapshot".equalsIgnoreCase(zfs.getZvol().zProperties.get("type").getValue())){
2981
                        MenuItem cloneSnapshpt = new MenuItem(treeZFSMenu, SWT.PUSH);
2982
                        cloneSnapshpt.setText("Clone "+zfs.getZvol().zProperties.get("name").getValue()); 
2983
                        cloneSnapshpt.addListener(SWT.Selection, new Listener() {
2984
                                public void handleEvent(final Event event) {
2985
                                        zfs.zfsClone();
2986
                                        if ( zfs.getError().size()>0){
2987

    
2988
                                        }else{
2989
                                                int indRoot=0;
2990
                                                int indItem=0;
2991
                                                if ("filesystem".equals(zfs.getZvol().zProperties.get("type").getValue())){
2992
                                                        infoUsedSize=zfs.getZvol().zProperties.get("usedbydataset").getValue()+"/"+zfs.getZvol().zProperties.get("available").getValue();
2993
                                                }else{
2994
                                                        infoUsedSize=zfs.getZvol().zProperties.get("used").getValue()+" / "+zfs.getZvol().zProperties.get("volsize").getValue();
2995
                                                }
2996
                                                for (int indT=0;indT<tree.getItemCount();indT++){
2997
                                                        if (tree.getItem(indT).getData().toString().equals(zfs.getZserver().zProperties.get("serverIP").getValue())){
2998
                                                                for (int indTreeVolFS=0;indTreeVolFS<tree.getItem(indT).getItemCount();indTreeVolFS++){
2999
                                                                        if (tree.getItem(indT).getItem(indTreeVolFS).getData().toString().compareTo(zfs.getZvol().zProperties.get("name").getValue()) >0){
3000
                                                                                if (zfs.getError().size()>0){
3001
                                                                                        updateItemTreeZfsList(false,zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3002
                                                                                }else{
3003
                                                                                        updateItemTreeZfsList(true, zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3004
                                                                                }
3005
                                                                                indRoot=indT;
3006
                                                                                indItem=indTreeVolFS;
3007
                                                                                break;
3008
                                                                        }
3009
                                                                }
3010
                                                                if ( indItem==0){
3011
                                                                        int indTreeVolFS=tree.getItem(indT).getItemCount();
3012
                                                                        if (zfs.getError().size()>0){
3013
                                                                                updateItemTreeZfsList(false,zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3014
                                                                        }else{
3015
                                                                                updateItemTreeZfsList(true,zfs.getZvol().zProperties.get("name").getValue(), tree.getItem(indT), infoUsedSize ,indTreeVolFS);
3016
                                                                        }
3017
                                                                        indRoot=indT;
3018
                                                                        indItem=indTreeVolFS;
3019
                                                                }
3020
                                                                tree.layout();
3021
                                                        }
3022
                                                }
3023
                                        }
3024
                                }
3025
                        });
3026
                }
3027

    
3028
        }
3029

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

    
3064
                                                                Arrays.sort(keysPropError);
3065
                                                                textBox = "";
3066
                                                                for (int i = 0; i < keysPropError.length; i++) {
3067
                                                                        String keyPropError = keysPropError[i];
3068
                                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3069
                                                                }
3070
                                                                if (keysPropError.length>0){
3071
                                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3072
                                                                        messageBoxError.setText("Warning");
3073
                                                                        messageBoxError.setMessage(textBox);
3074
                                                                        messageBoxError.open();
3075
                                                                }else{
3076
                                                                        tree.getSelection()[0].clearAll(true);
3077
                                                                        tree.getSelection()[0].dispose();
3078
                                                                        tree.layout();
3079
                                                                        zfs.setZvol();
3080
                                                                        if ( !tbtmConfig.isDisposed()){
3081
                                                                                tbtmConfig.dispose();
3082
                                                                                tabFolderConfig.layout();
3083
                                                                        }
3084
                                                                        createTabItemVolConfig();
3085
                                                                        refreshConfigVolume();
3086
                                                                        tabFolderConfig.layout();
3087

    
3088
                                                                }
3089
                                                        }
3090
                                                }
3091
                                        }else{
3092
                                                zfs.zfsDestroyVolFS();
3093
                                                String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
3094

    
3095
                                                Arrays.sort(keysPropError);
3096
                                                String textBox = "";
3097
                                                for (int i = 0; i < keysPropError.length; i++) {
3098
                                                        String keyPropError = keysPropError[i];
3099
                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3100
                                                }
3101
                                                if (keysPropError.length>0){
3102
                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3103
                                                        messageBoxError.setText("Warning");
3104
                                                        messageBoxError.setMessage(textBox);
3105
                                                        messageBoxError.open();
3106
                                                }else{
3107
                                                        tree.getSelection()[0].clearAll(true);
3108
                                                        tree.getSelection()[0].dispose();
3109
                                                        tree.layout();
3110
                                                        zfs.setZvol();
3111
                                                        if ( !tbtmConfig.isDisposed()){
3112
                                                                tbtmConfig.dispose();
3113
                                                                tabFolderConfig.layout();
3114
                                                        }
3115
                                                        createTabItemVolConfig();
3116
                                                        refreshConfigVolume();
3117
                                                        tabFolderConfig.layout();
3118

    
3119
                                                        if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
3120
                                                                //refreshInfoSnapshot();
3121
                                                                refreshConfigSnapshot();
3122
                                                        }
3123
                                                        tabFolderConfig.setSelection(tbtmConfig);
3124
                                                        refreshIscsiSession();
3125
                                                }
3126
                                        }
3127
                                }else{
3128
                                        if ( "volume".equals(zfs.getZvol().zProperties.get("type").getValue())){
3129
                                                zfs.zfsDelIscsi();
3130
                                                String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
3131

    
3132
                                                Arrays.sort(keysPropError);
3133
                                                String textBox = "";
3134
                                                for (int i = 0; i < keysPropError.length; i++) {
3135
                                                        String keyPropError = keysPropError[i];
3136
                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3137
                                                }
3138
                                                if (keysPropError.length>0){
3139
                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3140
                                                        messageBoxError.setText("Warning");
3141
                                                        messageBoxError.setMessage(textBox);
3142
                                                        messageBoxError.open();
3143
                                                }else{
3144
                                                        zfs.zfsDestroyVolFS();
3145
                                                        keysPropError = zfs.getError().keySet().toArray(new String[0]);
3146

    
3147
                                                        Arrays.sort(keysPropError);
3148
                                                        textBox = "";
3149
                                                        for (int i = 0; i < keysPropError.length; i++) {
3150
                                                                String keyPropError = keysPropError[i];
3151
                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3152
                                                        }
3153
                                                        if (keysPropError.length>0){
3154
                                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3155
                                                                messageBoxError.setText("Warning");
3156
                                                                messageBoxError.setMessage(textBox);
3157
                                                                messageBoxError.open();
3158
                                                        }else{
3159
                                                                zfs.zfsDisableSnapshots();
3160
                                                                tree.getSelection()[0].clearAll(true);
3161
                                                                tree.getSelection()[0].dispose();
3162
                                                                tree.layout();
3163
                                                                zfs.setZvol();
3164
                                                                if ( !tbtmConfig.isDisposed()){
3165
                                                                        tbtmConfig.dispose();
3166
                                                                        tabFolderConfig.layout();
3167
                                                                }
3168
                                                                createTabItemVolConfig();
3169
                                                                refreshConfigVolume();
3170
                                                                tabFolderConfig.layout();
3171

    
3172
                                                                if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
3173
                                                                        refreshConfigSnapshot();
3174
                                                                }
3175
                                                                tabFolderConfig.setSelection(tbtmConfig);
3176
                                                                refreshIscsiSession();
3177
                                                        }
3178
                                                }
3179
                                        }else{
3180
                                                if ( "snapshot".equals(zfs.getZvol().zProperties.get("type").getValue())){
3181
                                                        zfs.zfsDelIscsi();
3182
                                                        String[] keysPropError = zfs.getError().keySet().toArray(new String[0]);
3183

    
3184
                                                        Arrays.sort(keysPropError);
3185
                                                        String textBox = "";
3186
                                                        for (int i = 0; i < keysPropError.length; i++) {
3187
                                                                String keyPropError = keysPropError[i];
3188
                                                                textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3189
                                                        }
3190
                                                        if (keysPropError.length>0){
3191
                                                                MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3192
                                                                messageBoxError.setText("Warning");
3193
                                                                messageBoxError.setMessage(textBox);
3194
                                                                messageBoxError.open();
3195
                                                        }else{
3196
                                                                zfs.zfsDestroyVolFS();
3197
                                                                keysPropError = zfs.getError().keySet().toArray(new String[0]);
3198

    
3199
                                                                Arrays.sort(keysPropError);
3200
                                                                textBox = "";
3201
                                                                for (int i = 0; i < keysPropError.length; i++) {
3202
                                                                        String keyPropError = keysPropError[i];
3203
                                                                        textBox = textBox +zfs.getError().get(keyPropError)+".\n";
3204
                                                                }
3205
                                                                if (keysPropError.length>0){
3206
                                                                        MessageBox messageBoxError = new MessageBox(shell, SWT.DIALOG_TRIM);
3207
                                                                        messageBoxError.setText("Warning");
3208
                                                                        messageBoxError.setMessage(textBox);
3209
                                                                        messageBoxError.open();
3210
                                                                }else{
3211
                                                                        zfs.zfsDisableSnapshots();
3212
                                                                        tree.getSelection()[0].clearAll(true);
3213
                                                                        tree.getSelection()[0].dispose();
3214
                                                                        tree.layout();
3215
                                                                        zfs.setZvol();
3216
                                                                        if ( !tbtmConfig.isDisposed()){
3217
                                                                                tbtmConfig.dispose();
3218
                                                                                tabFolderConfig.layout();
3219
                                                                        }
3220
                                                                        createTabItemVolConfig();
3221
                                                                        refreshConfigVolume();
3222
                                                                        tabFolderConfig.layout();
3223

    
3224
                                                                        if (! zfs.getZvol().zProperties.get("type").getValue().equalsIgnoreCase("snapshot")){
3225
                                                                                refreshConfigSnapshot();
3226
                                                                        }
3227
                                                                        tabFolderConfig.setSelection(tbtmConfig);
3228
                                                                        refreshIscsiSession();
3229
                                                                }
3230
                                                        }
3231
                                                }
3232

    
3233

    
3234
                                        }
3235

    
3236
                                }        
3237
                        }
3238

    
3239

    
3240
                }
3241
        }
3242

    
3243

    
3244

    
3245
}