aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/ConsoleActivity.java
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2015-08-14 17:30:01 -0500
committerKenny Root <kenny@the-b.org>2015-08-14 17:30:01 -0500
commit25458db409cf59fff40fd282a23ee17cdf2142b9 (patch)
tree07ae21940477e2b88f2cca8d6e539a067316cedd /app/src/main/java/org/connectbot/ConsoleActivity.java
parenta04326017c5e75e96ad0e3b4d83c044017a01d54 (diff)
parent64f59c9c98b7b827f1475e8e98cb3929ba0c4d93 (diff)
downloadconnectbot-25458db409cf59fff40fd282a23ee17cdf2142b9.tar.gz
connectbot-25458db409cf59fff40fd282a23ee17cdf2142b9.tar.bz2
connectbot-25458db409cf59fff40fd282a23ee17cdf2142b9.zip
Merge pull request #124 from jklein24/tabs
Add tabs when there's more than one terminal active.
Diffstat (limited to 'app/src/main/java/org/connectbot/ConsoleActivity.java')
-rw-r--r--app/src/main/java/org/connectbot/ConsoleActivity.java53
1 files changed, 32 insertions, 21 deletions
diff --git a/app/src/main/java/org/connectbot/ConsoleActivity.java b/app/src/main/java/org/connectbot/ConsoleActivity.java
index 214f878..d6ee629 100644
--- a/app/src/main/java/org/connectbot/ConsoleActivity.java
+++ b/app/src/main/java/org/connectbot/ConsoleActivity.java
@@ -23,6 +23,7 @@ import java.util.List;
import org.connectbot.bean.HostBean;
import org.connectbot.bean.SelectionArea;
+import org.connectbot.service.BridgeDisconnectedListener;
import org.connectbot.service.PromptHelper;
import org.connectbot.service.TerminalBridge;
import org.connectbot.service.TerminalKeyListener;
@@ -50,9 +51,11 @@ import android.os.Message;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
+import android.support.design.widget.TabLayout;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
+import android.support.v7.widget.Toolbar;
import android.text.ClipboardManager;
import android.util.Log;
import android.view.ContextMenu;
@@ -88,7 +91,7 @@ import android.widget.TextView;
import android.widget.Toast;
import de.mud.terminal.vt320;
-public class ConsoleActivity extends Activity {
+public class ConsoleActivity extends Activity implements BridgeDisconnectedListener {
public final static String TAG = "CB.ConsoleActivity";
protected static final int REQUEST_EDIT = 1;
@@ -98,6 +101,8 @@ public class ConsoleActivity extends Activity {
private static final int KEYBOARD_DISPLAY_TIME = 1500;
protected ViewPager pager = null;
+ protected TabLayout tabs = null;
+ protected Toolbar toolbar = null;
@Nullable
protected TerminalManager bound = null;
protected TerminalPagerAdapter adapter = null;
@@ -152,7 +157,7 @@ public class ConsoleActivity extends Activity {
bound = ((TerminalManager.TerminalBinder) service).getService();
// let manager know about our event handling services
- bound.disconnectHandler = disconnectHandler;
+ bound.disconnectListener = ConsoleActivity.this;
bound.setResizeAllowed(true);
final String requestedNickname = (requested != null) ? requested.getFragment() : null;
@@ -192,21 +197,16 @@ public class ConsoleActivity extends Activity {
}
};
- protected Handler disconnectHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
+ public void onDisconnected(TerminalBridge bridge) {
+ synchronized (adapter) {
+ adapter.notifyDataSetChanged();
Log.d(TAG, "Someone sending HANDLE_DISCONNECT to parentHandler");
- // someone below us requested to display a password dialog
- // they are sending nickname and requested
- TerminalBridge bridge = (TerminalBridge) msg.obj;
-
- adapter.notifyDataSetChanged();
if (bridge.isAwaitingClose()) {
closeBridge(bridge);
}
}
- };
+ }
protected OnClickListener emulatedKeysListener = new OnClickListener() {
@Override
@@ -262,14 +262,12 @@ public class ConsoleActivity extends Activity {
* @param bridge
*/
private void closeBridge(final TerminalBridge bridge) {
- synchronized (pager) {
- updateEmptyVisible();
- updatePromptVisible();
+ updateEmptyVisible();
+ updatePromptVisible();
- // If we just closed the last bridge, go back to the previous activity.
- if (pager.getChildCount() == 0) {
- finish();
- }
+ // If we just closed the last bridge, go back to the previous activity.
+ if (pager.getChildCount() == 0) {
+ finish();
}
}
@@ -362,6 +360,7 @@ public class ConsoleActivity extends Activity {
inflater = LayoutInflater.from(this);
+ toolbar = (Toolbar) findViewById(R.id.toolbar);
pager = (ViewPager) findViewById(R.id.console_flip);
registerForContextMenu(pager);
pager.addOnPageChangeListener(
@@ -371,6 +370,8 @@ public class ConsoleActivity extends Activity {
onTerminalChanged();
}
});
+ adapter = new TerminalPagerAdapter();
+ pager.setAdapter(adapter);
empty = (TextView) findViewById(android.R.id.empty);
@@ -464,6 +465,10 @@ public class ConsoleActivity extends Activity {
}
});
+ tabs = (TabLayout) findViewById(R.id.tabs);
+ if (tabs != null)
+ tabs.setupWithViewPager(pager);
+
// detect fling gestures to switch between terminals
final GestureDetector detect = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
private float totalY = 0;
@@ -635,9 +640,6 @@ public class ConsoleActivity extends Activity {
}
});
-
- adapter = new TerminalPagerAdapter();
- pager.setAdapter(adapter);
}
/**
@@ -1226,6 +1228,15 @@ public class ConsoleActivity extends Activity {
}
@Override
+ public void notifyDataSetChanged() {
+ super.notifyDataSetChanged();
+ if (tabs != null) {
+ toolbar.setVisibility(this.getCount() > 1 ? View.VISIBLE : View.GONE);
+ tabs.setTabsFromPagerAdapter(this);
+ }
+ }
+
+ @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}