OSDN Git Service

T29259
[everfolder/source.git] / source / workspace / EverFolder / src / com / yuji / ef / EverFolderActivity.java
1 package com.yuji.ef;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 import android.content.BroadcastReceiver;
8 import android.content.Context;
9 import android.content.Intent;
10 import android.content.IntentFilter;
11 import android.content.res.Resources;
12 import android.database.sqlite.SQLiteDatabase;
13 import android.graphics.Bitmap;
14 import android.graphics.BitmapFactory;
15 import android.graphics.PixelFormat;
16 import android.os.Bundle;
17 import android.text.Editable;
18 import android.text.TextWatcher;
19 import android.view.Gravity;
20 import android.view.Menu;
21 import android.view.MenuItem;
22 import android.view.View;
23 import android.view.View.OnClickListener;
24 import android.view.WindowManager;
25 import android.widget.Button;
26 import android.widget.EditText;
27 import android.widget.LinearLayout;
28 import android.widget.TextView;
29
30 import com.yuji.ef.common.CommonUtil;
31 import com.yuji.ef.common.Constant;
32 import com.yuji.ef.dao.DatabaseHelper;
33 import com.yuji.ef.dao.DirNode;
34 import com.yuji.ef.dao.FileNode;
35 import com.yuji.ef.dao.LockDao;
36 import com.yuji.ef.dao.Node;
37 import com.yuji.ef.dao.Node.Status;
38 import com.yuji.ef.dao.NodeComparator;
39 import com.yuji.ef.dao.NodeDao;
40 import com.yuji.ef.dao.RootNode;
41 import com.yuji.ef.utility.BaseActivity;
42 import com.yuji.ef.utility.EvernoteIntentUtil;
43 import com.yuji.ef.utility.FolderUtil;
44
45 public class EverFolderActivity extends BaseActivity {
46         private enum ScreenStatus {
47                 Normal, AddNode, RenameNode
48         };
49
50         private LinearLayout msgLayout;
51         private LinearLayout msgButtonLayout;
52         private Button msgOkButton;
53         private Button msgCancelButton;
54         private EditText mainMsgEditText;
55
56         private IconFrameLayout layout;
57         private TextView confirmMsg;
58         private IconScrollView scrollView;
59         private Button leftButton;
60         private Button rightButton;
61         // private Button addButton;
62         // private Button deleteButton;
63
64         private ScreenStatus status;
65         private NodeComparator nodeComparator = new NodeComparator();
66
67         private Node top = null;
68         private int indent = 0;
69         private int viewY;
70         private boolean lock = false;
71         private boolean isInit = true;
72
73         private BroadcastReceiver receiver = new BroadcastReceiver() {
74                 @Override
75                 public void onReceive(Context context, Intent intent) {
76                         String action = intent.getAction();
77
78                         if (action.compareTo(Constant.ACTION_UPDATE) == 0) {
79                                 LockDao lockDao = (LockDao) LockDao.getInstance();
80                                 lock = lockDao.lock(EverFolderActivity.this,
81                                                 Constant.LOCK_UPDATE_NOTE);
82                                 if (lock) {
83                                         updateList();
84                                 }
85                                 setStatus();
86                         }
87                 }
88         };
89
90         @Override
91         public void onCreate(Bundle savedInstanceState) {
92                 super.onCreate(savedInstanceState);
93                 setContentView(R.layout.main);
94
95                 try {
96                         IntentFilter intentFilter = new IntentFilter();
97                         intentFilter.addAction(Constant.ACTION_UPDATE);
98                         registerReceiver(receiver, intentFilter);
99
100                         scrollView = (IconScrollView) findViewById(R.id.scrollView);
101                         layout = (IconFrameLayout) findViewById(R.id.frameLayout);
102                         layout.setActivity(this);
103                         layout.setScrollView(scrollView);
104
105                         leftButton = (Button) findViewById(R.id.leftButton);
106                         rightButton = (Button) findViewById(R.id.rightButton);
107                         // addButton = (Button) findViewById(R.id.addButton);
108                         // deleteButton = (Button) findViewById(R.id.deleteButton);
109
110                         msgLayout = (LinearLayout) findViewById(R.id.mainMsgLayout);
111                         confirmMsg = (TextView) findViewById(R.id.mainConfirmMsg);
112                         mainMsgEditText = (EditText) findViewById(R.id.mainMsgEditText);
113                         msgButtonLayout = (LinearLayout) findViewById(R.id.mainMsgButtonLayout);
114                         msgOkButton = (Button) findViewById(R.id.mainMsgOkButton);
115                         msgCancelButton = (Button) findViewById(R.id.mainMsgCancelButton);
116
117                         leftButton.setOnClickListener(new OnClickListener() {
118                                 @Override
119                                 public void onClick(View v) {
120                                         leftButtonOnClick();
121                                 }
122                         });
123                         rightButton.setOnClickListener(new OnClickListener() {
124                                 @Override
125                                 public void onClick(View v) {
126                                         rightButtonOnClick();
127                                 }
128                         });
129                         // addButton.setOnClickListener(new OnClickListener() {
130                         // @Override
131                         // public void onClick(View v) {
132                         // addButtonOnClick();
133                         // }
134                         // });
135                         // deleteButton.setOnClickListener(new OnClickListener() {
136                         // @Override
137                         // public void onClick(View v) {
138                         // deleteButtonOnClick();
139                         // }
140                         // });
141
142                         mainMsgEditText.addTextChangedListener(new TextWatcher() {
143                                 public void afterTextChanged(Editable s) {
144                                         String text = s.toString();
145                                         msgOkButton.setEnabled(text.length() > 0);
146                                 }
147
148                                 public void beforeTextChanged(CharSequence s, int start,
149                                                 int count, int after) {
150
151                                 }
152
153                                 public void onTextChanged(CharSequence s, int start,
154                                                 int before, int count) {
155
156                                 }
157                         });
158
159                         msgOkButton.setOnClickListener(new OnClickListener() {
160                                 @Override
161                                 public void onClick(View v) {
162                                         msgOkButtonOnClick();
163                                 }
164                         });
165                         msgCancelButton.setOnClickListener(new OnClickListener() {
166                                 @Override
167                                 public void onClick(View v) {
168                                         msgCancelOnClick();
169                                 }
170                         });
171                 } catch (Exception e) {
172                         // TODO
173                         e.printStackTrace();
174                 }
175         }
176
177         @Override
178         public boolean onCreateOptionsMenu(Menu menu) {
179                 boolean ret = super.onCreateOptionsMenu(menu);
180                 int index = 0;
181
182                 menu.add(Menu.NONE, Menu.FIRST + index++, Menu.NONE, "カット");
183                 menu.add(Menu.NONE, Menu.FIRST + index++, Menu.NONE, "ペースト");
184                 menu.add(Menu.NONE, Menu.FIRST + index++, Menu.NONE, "追加");
185                 menu.add(Menu.NONE, Menu.FIRST + index++, Menu.NONE, "削除");
186                 menu.add(Menu.NONE, Menu.FIRST + index++, Menu.NONE, "リネーム");
187                 menu.add(Menu.NONE, Menu.FIRST + index++, Menu.NONE, "設定");
188                 return ret;
189         }
190
191         @Override
192         public boolean onMenuOpened(int featureId, Menu menu) {
193                 boolean ret = super.onMenuOpened(featureId, menu);
194
195                 MenuItem item;
196
197                 boolean cutButtonFlag = false;
198                 boolean pastButtonFlag = false;
199                 boolean addButtonFlag = false;
200                 boolean deleteButtonFlag = false;
201                 boolean renameButtonFlag = false;
202                 boolean confButtonFlag = true;
203
204                 LabelIconView target = layout.getSelectedTarget();
205                 NodeDao dao = (NodeDao) NodeDao.getInstance();
206                 long id = -1;
207                 Node node = null;
208                 if (target != null) {
209                         id = target.getNodeId();
210                         node = dao.searchById(id);
211                 }
212
213                 if (isDirNode(target, node, false)) {
214                         cutButtonFlag = true;
215                 }
216                 if (isDirNode(target, node, true) && isCut()) {
217                         pastButtonFlag = true;
218                 }
219                 if (isDirNode(target, node, true)) {
220                         addButtonFlag = true;
221                 }
222                 if (isDirNode(target, node, false) && !isNoteBook(node)
223                                 && CommonUtil.isNull(node.getChildrenString())) {
224                         deleteButtonFlag = true;
225                 }
226                 if (isDirNode(target, node, false) && !isNoteBook(node)) {
227                         renameButtonFlag = true;
228                 }
229
230                 int index = 0;
231                 item = menu.getItem(index++);
232                 item.setVisible(cutButtonFlag);
233                 item = menu.getItem(index++);
234                 item.setVisible(pastButtonFlag);
235                 item = menu.getItem(index++);
236                 item.setVisible(addButtonFlag);
237                 item = menu.getItem(index++);
238                 item.setVisible(deleteButtonFlag);
239                 item = menu.getItem(index++);
240                 item.setVisible(renameButtonFlag);
241                 item = menu.getItem(index++);
242                 item.setVisible(confButtonFlag);
243
244                 return ret;
245         }
246
247         private boolean isDirNode(LabelIconView target, Node node,
248                         boolean containRoot) {
249                 if (target == null) {
250                         return false;
251                 }
252                 if (node == null) {
253                         return false;
254                 }
255                 if (!containRoot && (node instanceof RootNode)) {
256                         return false;
257                 }
258                 if (!(node instanceof DirNode)) {
259                         return false;
260                 }
261                 return true;
262         }
263
264         private boolean isNoteBook(Node node) {
265                 if (node == null) {
266                         return false;
267                 }
268                 if (CommonUtil.isNull(node.getGuid())) {
269                         return false;
270                 }
271                 return true;
272         }
273
274         private boolean isCut() {
275                 LabelIconView srcTarget = layout.getCutTarget();
276                 if (srcTarget == null) {
277                         return false;
278                 }
279                 return true;
280         }
281
282         @Override
283         public boolean onOptionsItemSelected(MenuItem item) {
284                 Intent intent;
285                 try {
286                         switch (item.getItemId()) {
287                         case Menu.FIRST + 0:
288                                 selectMenuCut();
289                                 break;
290                         case Menu.FIRST + 1:
291                                 selectMenuPast();
292                                 break;
293                         case Menu.FIRST + 2:
294                                 selectMenuAdd();
295                                 break;
296                         case Menu.FIRST + 3:
297                                 selectMenuDelete();
298                                 break;
299                         case Menu.FIRST + 4:
300                                 selectMenuRename();
301                                 break;
302                         case Menu.FIRST + 5:
303                                 // dummy();
304                                 // dummy2();
305                                 intent = new Intent(this, (Class<?>) SettingActivity.class);
306                                 startActivityForResult(intent, 0);
307                                 break;
308                         default:
309                                 break;
310                         }
311                 } catch (Exception e) {
312                         terminate(e);
313                 }
314                 return super.onOptionsItemSelected(item);
315         }
316
317         private void dummy() {
318                 NodeDao dao = (NodeDao) NodeDao.getInstance();
319                 List<Node> list = dao.search();
320                 for (Node node : list) {
321                         System.out.println(node.toString());
322                 }
323         }
324
325         private void dummy2() {
326                 LockDao dao = (LockDao) LockDao.getInstance();
327                 boolean b;
328
329                 try {
330                         b = dao.lock(this, "key");
331                         b = dao.lock(this, "key");
332                         dao.unlock(new Object(), "key");
333                         b = dao.lock(this, "key");
334                         dao.unlock(this, "key");
335                         b = dao.lock(this, "key");
336                         b = dao.lock(this, "key");
337                         b = dao.lock(this, "key");
338
339                 } catch (Exception e) {
340                         e.printStackTrace();
341                 }
342
343         }
344
345         private void selectMenuAdd() {
346                 setStatus(ScreenStatus.AddNode);
347         }
348
349         private void selectMenuDelete() {
350                 FolderUtil util = FolderUtil.getInstance();
351                 LabelIconView target = layout.getSelectedTarget();
352                 long id = target.getNodeId();
353                 NodeDao dao = (NodeDao) NodeDao.getInstance();
354                 Node node = dao.searchById(id);
355                 if (node != null) {
356                         util.deleteNode(node);
357                         // TODO 三角マークも消さないといけないのでは
358                         layout.removeView(target);
359                         updateList();
360                         setStatus();
361                 }
362         }
363
364         private void selectMenuRename() {
365                 LabelIconView target = layout.getSelectedTarget();
366                 if (target == null) {
367                         return;
368                 }
369
370                 long id = target.getNodeId();
371                 NodeDao dao = (NodeDao) NodeDao.getInstance();
372                 Node node = dao.searchById(id);
373                 if (node != null) {
374                         String text = node.getName();
375                         mainMsgEditText.setText(text);
376                         setStatus(ScreenStatus.RenameNode);
377                 }
378         }
379
380         private void selectMenuCut() {
381                 LabelIconView target = layout.getSelectedTarget();
382                 if (target == null) {
383                         return;
384                 }
385
386                 layout.setCutTarget(target);
387                 layout.refresh();
388         }
389
390         private void selectMenuPast() {
391                 LabelIconView srcTarget = layout.getCutTarget();
392                 if (srcTarget == null) {
393                         return;
394                 }
395
396                 LabelIconView dstTarget = layout.getSelectedTarget();
397                 if (dstTarget == null) {
398                         return;
399                 }
400
401                 layout.setCutTarget(null);
402
403                 long srcId = srcTarget.getNodeId();
404                 long dstId = dstTarget.getNodeId();
405                 execute(srcId, dstId);
406         }
407
408         private void updateList() {
409                 NodeDao dao = (NodeDao) NodeDao.getInstance();
410                 top = dao.searchRoot();
411                 if (top == null) {
412                         // TODO
413                 }
414                 layout.removeAllViews();
415                 updateList(top);
416                 layout.refresh();
417         }
418
419         private void updateList(Node parent) {
420                 viewY = 30;
421
422                 // List<Node> list = parent.getChildren();
423                 // for (Node node : list){
424                 // updateList(node, x);
425                 // }
426                 updateList(parent, 0);
427                 layout.setMinimumHeight(viewY);
428                 layout.invalidate();
429         }
430
431         private void updateList(Node node, int depth) {
432                 int N = 100;
433                 int M = 120;
434                 int x = N * (depth - indent) + 50;
435
436                 if (depth - indent >= 0
437                                 && !(depth - indent == 0 && node instanceof FileNode)) {
438                         LabelIconView view = new LabelIconView(this);
439                         node.setView(view);
440
441                         Resources r = getResources();
442                         Bitmap bmp1 = null;
443                         int id = node.getStatusIconId();
444                         if (id >= 0) {
445                                 bmp1 = BitmapFactory.decodeResource(r, node.getStatusIconId());
446                         }
447                         Bitmap bmp2 = BitmapFactory.decodeResource(r, node.getIconId());
448                         createIconImageView(view, bmp1, bmp2, node.getName(), x, viewY);
449                         // LabelIconView s = view.getStatusImageView();
450                         // if (s != null) {
451                         // s.setNodeId(node.getId());
452                         // }
453                         view.setNodeId(node.getId());
454                 }
455                 viewY += M;
456
457                 if (node.getStatus() != Node.Status.OPEN) {
458                         return;
459                 }
460                 List<Long> idList = node.getChildren();
461                 if (idList == null) {
462                         return;
463                 }
464
465                 List<Node> list = new ArrayList<Node>();
466                 NodeDao dao = (NodeDao) NodeDao.getInstance();
467                 for (Long id : idList) {
468                         Node n = dao.searchById(id);
469                         list.add(n);
470                 }
471                 Collections.sort(list, nodeComparator);
472                 for (Node n : list) {
473                         updateList(n, depth + 1);
474                 }
475         }
476
477         private void createIconImageView(LabelIconView v, Bitmap bmp1, Bitmap bmp2,
478                         String text, int x, int y) {
479                 v.init(x, y, bmp1, bmp2, text);
480
481                 android.view.WindowManager.LayoutParams params = new WindowManager.LayoutParams();
482                 params.gravity = Gravity.TOP | Gravity.LEFT;
483                 params.height = WindowManager.LayoutParams.WRAP_CONTENT;
484                 params.width = WindowManager.LayoutParams.WRAP_CONTENT;
485                 params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
486                                 | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
487                                 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
488                                 | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
489                 params.format = PixelFormat.TRANSLUCENT;
490                 params.windowAnimations = 0;
491                 params.x = x;
492                 params.y = y;
493                 v.setLayoutParams(params);
494
495                 // LabelIconView siv = v.getStatusImageView();
496                 // if (siv != null) {
497                 // layout.addView(siv, false);
498                 // }
499
500                 layout.addView(v);
501                 v.layout(x, y, x + v.getWidth(), y + v.getHeight());
502         }
503
504         @Override
505         protected void onActivityResult(int requestCode, int resultCode, Intent data) {
506                 // updateList();
507                 // setStatus();
508                 isInit = true;
509         }
510
511         @Override
512         protected void onStart() {
513                 super.onStart();
514
515                 LockDao lockDao = (LockDao) LockDao.getInstance();
516                 lock = lockDao.lock(this, Constant.LOCK_UPDATE_NOTE);
517
518                 if (isInit) {
519                         status = ScreenStatus.Normal;
520
521                         if (lock) {
522                                 updateList();
523                         } else {
524                                 layout.removeAllViews();
525                         }
526                         setStatus();
527                         isInit = false;
528                 } else {
529                         setStatus();
530                 }
531         }
532
533         @Override
534         protected void onPause() {
535                 // ロック未取得でも解除する(ゴミ掃除)
536                 LockDao lockDao = (LockDao) LockDao.getInstance();
537                 lockDao.unlock(this, Constant.LOCK_UPDATE_NOTE);
538                 lock = false;
539
540                 super.onPause();
541         }
542
543         private void leftButtonOnClick() {
544                 moveButtonOnClick(-1);
545                 setStatus();
546         }
547
548         private void rightButtonOnClick() {
549                 moveButtonOnClick(1);
550                 setStatus();
551         }
552
553         private void moveButtonOnClick(int dx) {
554                 int mx = 0;
555
556                 if (dx < 0) {
557                         if (indent > 0) {
558                                 mx = -1;
559                         }
560                 } else {
561                         mx = 1;
562                 }
563                 if (mx != 0) {
564                         indent += mx;
565                         removeAllNodeView();
566                         updateList();
567                 }
568         }
569
570         // private void addButtonOnClick() {
571         // setStatus(ScreenStatus.AddNode);
572         // }
573         //
574         // private void deleteButtonOnClick() {
575         // FolderUtil util = FolderUtil.getInstance();
576         // LabelIconView target = layout.getSelectedTarget();
577         // long id = target.getNodeId();
578         // NodeDao dao = (NodeDao) NodeDao.getInstance();
579         // Node node = dao.searchById(id);
580         // if (node != null) {
581         // util.deleteNode(node);
582         // // TODO 三角マークも消さないといけないのでは
583         // layout.removeView(target);
584         // updateList();
585         // setStatus();
586         // }
587         // }
588
589         private void msgOkButtonOnClick() {
590                 FolderUtil util = FolderUtil.getInstance();
591                 LabelIconView target = layout.getSelectedTarget();
592                 NodeDao dao = (NodeDao) NodeDao.getInstance();
593
594                 if (status == ScreenStatus.AddNode) {
595                         long id = target.getNodeId();
596                         Node parent = dao.searchById(id);
597                         if (parent != null) {
598                                 String text = mainMsgEditText.getText().toString();
599                                 DirNode node = new DirNode(text, null);
600                                 util.addDirNode(parent, node);
601                                 updateList();
602                                 setStatus(ScreenStatus.Normal);
603                         }
604                 } else if (status == ScreenStatus.RenameNode) {
605                         long id = target.getNodeId();
606                         Node node = dao.searchById(id);
607                         if (node != null) {
608                                 String text = mainMsgEditText.getText().toString();
609
610                                 dao.updateName(node, text);
611                                 updateList();
612                                 setStatus(ScreenStatus.Normal);
613                         }
614                 }
615         }
616
617         private void msgCancelOnClick() {
618                 setStatus(ScreenStatus.Normal);
619         }
620
621         public void execute(long srcId, long dstId) {
622                 try {
623                         removeAllNodeView();
624
625                         NodeDao dao = (NodeDao) NodeDao.getInstance();
626
627                         if (srcId < 0) {
628                                 // TODO
629                         }
630                         if (dstId < 0) {
631                                 // TODO
632                         }
633
634                         if (!isMovable(srcId, dstId)) {
635                                 return;
636                         }
637
638                         Node src = dao.searchById(srcId);
639                         Node dst = null;
640                         if (srcId == dstId) {
641                                 dst = src;
642                         } else {
643                                 dst = dao.searchById(dstId);
644                         }
645
646                         if (dstId == src.getParent()) {
647                                 // 同じ場所に移動
648                                 return;
649                         }
650
651                         Node sp = dao.searchById(src.getParent());
652                         if (sp == null) {
653                                 // TODO
654                         }
655                         Node dp = null;
656                         if (src.getParent() == dst.getParent()) {
657                                 dp = sp;
658                         } else {
659                                 dp = dao.searchById(dst.getParent());
660                         }
661                         if (dp == null) {
662                                 // TODO
663                         }
664
665                         // TODO DBへのアクセス
666                         // sp.remove(src.getId());
667                         SQLiteDatabase db = DatabaseHelper.getInstance()
668                                         .getSQLiteDatabase();
669                         db.beginTransaction();
670                         try {
671                                 dao.remoteChildrenIdNT(sp, src.getId());
672                                 if (dst instanceof DirNode) {
673                                         // dst.add(src.getId());
674                                         dao.updateParentNT(src, dst.getId());
675                                         dao.addChildrenIdNT(dst, src.getId());
676                                 } else if (dst instanceof FileNode) {
677                                         // dp.add(src.getId());
678                                         dao.updateParentNT(src, dst.getId());
679                                         dao.addChildrenIdNT(dp, src.getId());
680                                 }
681
682                                 db.setTransactionSuccessful();
683                         } finally {
684                                 db.endTransaction();
685                         }
686                 } finally {
687                         updateList();
688                 }
689         }
690
691         private boolean isMovable(long srcId, long dstId) {
692                 NodeDao dao = (NodeDao) NodeDao.getInstance();
693
694                 while (dstId >= 0) {
695                         if (srcId == dstId) {
696                                 return false;
697                         }
698                         Node node = dao.searchById(dstId);
699                         if (node == null) {
700                                 // TODO エラー
701                                 return false;
702                         }
703                         if (!(node instanceof DirNode)) {
704                                 return true;
705                         }
706                         dstId = node.getParent();
707                 }
708                 return true;
709         }
710
711         public void execute(long id) {
712                 NodeDao dao = (NodeDao) NodeDao.getInstance();
713
714                 Node node = dao.searchById(id);
715                 if (node == null) {
716                         // TODO
717                 }
718                 node.toggleStatus();
719                 Status status = node.getStatus();
720
721                 dao.updateStatus(node, status);
722
723                 removeAllNodeView();
724                 updateList();
725         }
726
727         public void executeView(long id) {
728                 NodeDao dao = (NodeDao) NodeDao.getInstance();
729
730                 Node node = dao.searchById(id);
731                 String guid = node.getGuid();
732
733                 EvernoteIntentUtil util = EvernoteIntentUtil.getInstance();
734                 util.viewNote(this, guid);
735         }
736
737         public void targetSelectedChanged(boolean status) {
738                 setStatus();
739         }
740
741         public void removeAllNodeView() {
742                 layout.removeAllViews();
743         }
744
745         private void setStatus() {
746                 setStatus(status);
747         }
748
749         private void setStatus(ScreenStatus status) {
750                 try {
751                         if (this.status != status) {
752                                 this.status = status;
753                         }
754
755                         if (!lock) {
756                                 msgLayout.setVisibility(View.VISIBLE);
757                                 confirmMsg.setText("データ更新中"); // TODO
758                                 mainMsgEditText.setVisibility(View.GONE);
759                                 msgButtonLayout.setVisibility(View.GONE);
760                                 status = ScreenStatus.Normal;
761                                 return;
762                         }
763
764                         if (status == ScreenStatus.Normal) {
765                                 msgLayout.setVisibility(View.GONE);
766                                 // mainMsgEditText.setText("");
767
768                                 boolean leftButtonFlag = true;
769                                 boolean rightButtonFlag = true;
770                                 // boolean addButtonFlag = true;
771                                 // boolean deleteButtonFlag = true;
772
773                                 if (indent <= 0) {
774                                         leftButtonFlag = false;
775                                 }
776
777                                 // LabelIconView target = layout.getSelectedTarget();
778                                 // NodeDao dao = (NodeDao) NodeDao.getInstance();
779                                 // long id = -1;
780                                 // Node node = null;
781                                 // if (target != null) {
782                                 // id = target.getNodeId();
783                                 // node = dao.searchById(id);
784                                 // }
785                                 // if (target == null || node == null || !(node instanceof
786                                 // DirNode))
787                                 // {
788                                 // addButtonFlag = false;
789                                 // }
790                                 // if (target == null || (node != null && node instanceof
791                                 // RootNode))
792                                 // {
793                                 // deleteButtonFlag = false;
794                                 // }
795
796                                 leftButton.setEnabled(leftButtonFlag);
797                                 rightButton.setEnabled(rightButtonFlag);
798                                 // addButton.setEnabled(addButtonFlag);
799                                 // deleteButton.setEnabled(deleteButtonFlag);
800                         } else if (status == ScreenStatus.AddNode) {
801                                 msgLayout.setVisibility(View.VISIBLE);
802                                 mainMsgEditText.setVisibility(View.VISIBLE);
803                                 msgButtonLayout.setVisibility(View.VISIBLE);
804                                 mainMsgEditText.setText("");
805                         } else if (status == ScreenStatus.RenameNode) {
806                                 msgLayout.setVisibility(View.VISIBLE);
807                                 mainMsgEditText.setVisibility(View.VISIBLE);
808                                 msgButtonLayout.setVisibility(View.VISIBLE);
809                                 String text = mainMsgEditText.getText().toString();
810                         }
811                 } catch (Throwable e) {
812                         // TODO
813                         e.printStackTrace();
814                 }
815         }
816 }