1927404a35129b5deea21dda1185962d0f5578c9
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / PathLayout.java
1 package eu.alefzero.owncloud;
2
3 import java.net.Inet4Address;
4 import java.util.Stack;
5
6 import android.content.Context;
7 import android.util.AttributeSet;
8 import android.view.View;
9 import android.view.View.OnClickListener;
10 import android.widget.HorizontalScrollView;
11 import android.widget.ImageView;
12 import android.widget.LinearLayout;
13 import android.widget.ScrollView;
14 import android.widget.TextView;
15
16 public class PathLayout extends LinearLayout {
17
18 private Stack<String> paths;
19 ScrollView internalScroll;
20 LinearLayout view;
21
22 public PathLayout(Context context) {
23 super(context);
24 initialize();
25 }
26
27 public PathLayout(Context context, AttributeSet attrs) {
28 super(context, attrs);
29 initialize();
30 }
31
32 public String pop() {
33 if (paths.empty()) {
34 return null;
35 }
36 int start = paths.size()*2-2;
37 int count = 2;
38 if (paths.size() == 1) {
39 start++;
40 count--;
41 }
42 view.removeViews(start, count);
43 return paths.pop();
44 }
45
46 public void push(String path) {
47 // its weird that we cannot declare static imgView as path separator
48 if (!paths.empty()) {
49 ImageView iv = new ImageView(getContext());
50 iv.setImageDrawable(getResources().getDrawable(R.drawable.breadcrumb));
51 iv.setPadding(2, 0, 2, 0);
52 view.addView(iv);
53 }
54 TextView tv = new TextView(getContext());
55 tv.setLayoutParams(getLayoutParams());
56 tv.setText(path);
57 view.addView(tv);
58 HorizontalScrollView hsv = (HorizontalScrollView) internalScroll.getChildAt(0);
59 hsv.smoothScrollTo(hsv.getMaxScrollAmount()*2, 0);
60 paths.push(path);
61 }
62
63 public String peek() {
64 return paths.peek();
65 }
66
67 private void initialize() {
68 paths = new Stack<String>();
69 internalScroll = new ScrollView(getContext());
70 internalScroll.setFillViewport(true);
71 HorizontalScrollView hsv = new HorizontalScrollView(getContext());
72 hsv.setSmoothScrollingEnabled(true);
73 internalScroll.addView(hsv);
74 view = new LinearLayout(getContext());
75 addView(internalScroll);
76 hsv.addView(view);
77 ImageView iv = new ImageView(getContext());
78 iv.setImageDrawable(getResources().getDrawable(R.drawable.breadcrumb));
79 view.addView(iv);
80 }
81
82 }