Java tutorial
/******************************************************************************* * Copyright (C) 2014 Open University of The Netherlands * Author: Bernardo Tabuenca Archilla * Lifelong Learning Hub project * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package org.ounl.lifelonglearninghub.fcube.navigate; import org.ounl.lifelonglearninghub.fcube.R; import org.ounl.lifelonglearninghub.fcube.commands.FCBeep; import org.ounl.lifelonglearninghub.fcube.commands.FCColor; import org.ounl.lifelonglearninghub.fcube.commands.FCFade; import org.ounl.lifelonglearninghub.fcube.commands.FCMelody1; import org.ounl.lifelonglearninghub.fcube.commands.FCPieChart; import org.ounl.lifelonglearninghub.fcube.commands.FCRainbow; import org.ounl.lifelonglearninghub.fcube.commands.FCRainbowCircle; import org.ounl.lifelonglearninghub.fcube.commands.IFeedbackCubeCommnads; import org.ounl.lifelonglearninghub.fcube.config.FeedbackCubeConfig; import org.ounl.lifelonglearninghub.fcube.config.FeedbackCubeManager; import org.ounl.lifelonglearninghub.fcube.jukebox.Sampler; import android.app.ActionBar; import android.app.AlertDialog; import android.app.FragmentTransaction; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.NumberPicker; import android.widget.RadioButton; import android.widget.TextView; import android.widget.Toast; public class SwipeFragmentActivity extends FragmentActivity implements ActionBar.TabListener { private String CLASSNAME = this.getClass().getName(); /** * The {@link android.support.v4.view.PagerAdapter} that will provide * fragments for each of the three primary sections of the app. We use a * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which * will keep every loaded fragment in memory. If this becomes too memory * intensive, it may be best to switch to a * {@link android.support.v4.app.FragmentStatePagerAdapter}. */ AppSectionsPagerAdapter mAppSectionsPagerAdapter; /** * The {@link ViewPager} that will display the three primary sections of the * app, one at a time. */ ViewPager mViewPager; // Active command IFeedbackCubeCommnads ifcc; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pager); // Create the adapter that will return a fragment for each of the three // primary sections // of the app. mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager()); // Set up the action bar. final ActionBar actionBar = getActionBar(); // Specify that the Home/Up button should not be enabled, since there is // no hierarchical // parent. actionBar.setHomeButtonEnabled(false); // Specify that we will be displaying tabs in the action bar. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // Set up the ViewPager, attaching the adapter and setting up a listener // for when the // user swipes between sections. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mAppSectionsPagerAdapter); mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { // When swiping between different app sections, select // the corresponding tab. // We can also use ActionBar.Tab#select() to do this if // we have a reference to the // Tab. actionBar.setSelectedNavigationItem(position); } }); // For each of the sections in the app, add a tab to the action bar. for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) { // Create a tab with text corresponding to the page title defined by // the adapter. // Also specify this Activity object, which implements the // TabListener interface, as the // listener for when this tab is selected. actionBar.addTab( actionBar.newTab().setText(mAppSectionsPagerAdapter.getPageTitle(i)).setTabListener(this)); } } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { // When the given tab is selected, switch to the corresponding page in // the ViewPager. mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } /** * Jukebox fragment Clicked on any of the buttons * from the jukebox fragmen * * @param v */ public void onClickButton(View v) { IFeedbackCubeCommnads c = FeedbackCubeConfig.getSingleInstance().getSampler((String) v.getTag()) .getmFCCommand(); new FeedbackCubeManager().execute(c); } /** * Replaces sampler button in jukebox * * @param v */ public void onClickReplaceSamplerButton(View v) { // Rename button LinearLayout llButtons = (LinearLayout) v.getParent(); LinearLayout llParent = (LinearLayout) llButtons.getParent(); EditText etRen = (EditText) llParent.findViewById(R.id.editTextRename); String sNewName = etRen.getText().toString(); Button but = (Button) v; but.setTextColor(Color.CYAN); but.setText(sNewName); // Fragment f = mAppSectionsPagerAdapter.getItem(iActiveFragment); // // // // // if(f.getClass().equals(VisualSectionFragment.class)){ // // FCColor fcc = (FCColor)ifcc; // Sampler samp = new Sampler(fcc, sNewName); // FeedbackCubeConfig.getSingleInstance().addSampler((String)v.getTag(), samp, this); // // }else if (f.getClass().equals(AudioSectionFragment.class)){ // // FCBeep fcc = (FCBeep)ifcc; // Sampler samp = new Sampler(fcc, sNewName); // FeedbackCubeConfig.getSingleInstance().addSampler((String)v.getTag(), samp, this); // // }else if (f.getClass().equals(EffectsSectionFragment.class)){ // // // if(ifcc.getClass().equals(FCRainbow.class)){ // FCRainbow fcc = (FCRainbow)ifcc; // Sampler samp = new Sampler(fcc, sNewName); // FeedbackCubeConfig.getSingleInstance().addSampler((String)v.getTag(), samp, this); // }else if (ifcc.getClass().equals(FCRainbowCircle.class)){ // FCRainbowCircle fcc = (FCRainbowCircle)ifcc; // Sampler samp = new Sampler(fcc, sNewName); // FeedbackCubeConfig.getSingleInstance().addSampler((String)v.getTag(), samp, this); // }else if (ifcc.getClass().equals(FCFade.class){ // // // FCFade fcc = (FCFade)ifcc; // Sampler samp = new Sampler(fcc, sNewName); // FeedbackCubeConfig.getSingleInstance().addSampler((String)v.getTag(), samp, this); // } // // // } // Sampler samp = new Sampler(ifcc, sNewName); FeedbackCubeConfig.getSingleInstance().addSampler((String) v.getTag(), samp, this); } /** * Clicked on the cube button in any of the fragments v.getTag determines * the tab where the action comes from * * @param v */ public void onClickCube(View v) { if (getCommnand(v) != null) { ifcc = getCommnand(v); new FeedbackCubeManager().execute(ifcc); } else { Toast.makeText(this, "This command cannot be launched", Toast.LENGTH_SHORT).show(); } // LinearLayout llButtons = (LinearLayout) v.getParent(); // LinearLayout llRoot = (LinearLayout) llButtons.getParent(); // // String sTag = v.getTag().toString(); // if (sTag.compareTo(getString(R.string.tab_vi)) == 0) { // // TextView tvRed = (TextView) llRoot // .findViewById(R.id.textViewRedValue); // TextView tvGreen = (TextView) llRoot // .findViewById(R.id.textViewGreenValue); // TextView tvBlue = (TextView) llRoot // .findViewById(R.id.textViewBlueValue); // // FCColor c = new FCColor(FeedbackCubeConfig.getSingleInstance() // .getIp(), tvRed.getText().toString(), tvGreen.getText() // .toString(), tvBlue.getText().toString()); // // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); // // new FeedbackCubeManager().execute(c); // // } else if (sTag.compareTo(getString(R.string.tab_au)) == 0) { // // CheckBox cb = (CheckBox) llRoot.findViewById(R.id.cbBeep); // if (cb.isChecked()) { // FCBeep c = new FCBeep(FeedbackCubeConfig.getSingleInstance() // .getIp()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); // // new FeedbackCubeManager().execute(c); // } else { // Toast.makeText(this, // "Check off the Beep! to launch the action.", // Toast.LENGTH_SHORT).show(); // } // // } else if (sTag.compareTo(getString(R.string.tab_ef)) == 0) { // // RadioButton rbRainbow = (RadioButton) llRoot // .findViewById(R.id.rbRainbow); // RadioButton rbRainbowC = (RadioButton) llRoot // .findViewById(R.id.rbRainbowCircle); // RadioButton rbFade = (RadioButton) llRoot.findViewById(R.id.rbFade); // // if (rbRainbow.isChecked()) { // // FCRainbow c = new FCRainbow(FeedbackCubeConfig // .getSingleInstance().getIp()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); // // new FeedbackCubeManager().execute(c); // // } else if (rbRainbowC.isChecked()) { // // FCRainbowCircle c = new FCRainbowCircle(FeedbackCubeConfig // .getSingleInstance().getIp()); // // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); // // new FeedbackCubeManager().execute(c); // // } else if (rbFade.isChecked()) { // // // NumberPicker npD = (NumberPicker) llRoot.findViewById(R.id.npDelay); // NumberPicker npN = (NumberPicker) llRoot.findViewById(R.id.npNumber); // // // FCFade c = new FCFade(FeedbackCubeConfig.getSingleInstance() // .getIp(), ""+npN.getValue(), ""+npD.getValue()); // // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); // // new FeedbackCubeManager().execute(c); // } // // } } /** * Returns active command for controls selected in view . * Returns null for wrong command * * @param v * @return */ private IFeedbackCubeCommnads getCommnand(View v) { LinearLayout llButtons = (LinearLayout) v.getParent(); LinearLayout llRoot = (LinearLayout) llButtons.getParent(); String sTag = v.getTag().toString(); if (sTag.compareTo(getString(R.string.tab_vi)) == 0) { TextView tvRed = (TextView) llRoot.findViewById(R.id.textViewRedValue); TextView tvGreen = (TextView) llRoot.findViewById(R.id.textViewGreenValue); TextView tvBlue = (TextView) llRoot.findViewById(R.id.textViewBlueValue); RadioButton rbF = (RadioButton) llRoot.findViewById(R.id.rbFullColor); RadioButton rbP = (RadioButton) llRoot.findViewById(R.id.rbPartColor); if (rbP.isChecked()) { NumberPicker npStart = (NumberPicker) llRoot.findViewById(R.id.npLedStart); NumberPicker npStop = (NumberPicker) llRoot.findViewById(R.id.npLedStop); FCPieChart c = new FCPieChart(FeedbackCubeConfig.getSingleInstance().getIp(), npStart.getValue() + "", npStop.getValue() + "", tvRed.getText().toString(), tvGreen.getText().toString(), tvBlue.getText().toString()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); return c; } else { FCColor c = new FCColor(FeedbackCubeConfig.getSingleInstance().getIp(), tvRed.getText().toString(), tvGreen.getText().toString(), tvBlue.getText().toString()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); return c; } } else if (sTag.compareTo(getString(R.string.tab_au)) == 0) { // CheckBox cb = (CheckBox) llRoot.findViewById(R.id.cbBeep); // if (cb.isChecked()) { // FCBeep c = new FCBeep(FeedbackCubeConfig.getSingleInstance() // .getIp()); //// Toast.makeText(this, "Launch cube " + c.toString(), //// Toast.LENGTH_SHORT).show(); // // return c; // } else { // Toast.makeText(this, // "Check off the Beep! to launch the action.", // Toast.LENGTH_SHORT).show(); // } RadioButton rbBeep = (RadioButton) llRoot.findViewById(R.id.rbBeep); RadioButton rbMelody = (RadioButton) llRoot.findViewById(R.id.rbMelody1); if (rbBeep.isChecked()) { FCBeep c = new FCBeep(FeedbackCubeConfig.getSingleInstance().getIp()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); return c; } else if (rbMelody.isChecked()) { FCMelody1 c = new FCMelody1(FeedbackCubeConfig.getSingleInstance().getIp()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); return c; } } else if (sTag.compareTo(getString(R.string.tab_ef)) == 0) { RadioButton rbRainbow = (RadioButton) llRoot.findViewById(R.id.rbRainbow); RadioButton rbRainbowC = (RadioButton) llRoot.findViewById(R.id.rbRainbowCircle); RadioButton rbFade = (RadioButton) llRoot.findViewById(R.id.rbFade); if (rbRainbow.isChecked()) { FCRainbow c = new FCRainbow(FeedbackCubeConfig.getSingleInstance().getIp()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); return c; } else if (rbRainbowC.isChecked()) { FCRainbowCircle c = new FCRainbowCircle(FeedbackCubeConfig.getSingleInstance().getIp()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); return c; } else if (rbFade.isChecked()) { NumberPicker npD = (NumberPicker) llRoot.findViewById(R.id.npDelay); NumberPicker npN = (NumberPicker) llRoot.findViewById(R.id.npNumber); FCFade c = new FCFade(FeedbackCubeConfig.getSingleInstance().getIp(), "" + npN.getValue(), "" + npD.getValue()); // Toast.makeText(this, "Launch cube " + c.toString(), // Toast.LENGTH_SHORT).show(); return c; } } return null; } /** * On click one radiobutton, deslect the rest of the radiobuttons * * @param v */ public void onSelectRadioButton(View v) { LinearLayout llRadioButton = (LinearLayout) v.getParent(); LinearLayout llBranch = (LinearLayout) llRadioButton.getParent(); LinearLayout llRoot = (LinearLayout) llBranch.getParent(); RadioButton rbF = (RadioButton) llRoot.findViewById(R.id.rbFade); RadioButton rbRainbow = (RadioButton) llRoot.findViewById(R.id.rbRainbow); RadioButton rbRainbowC = (RadioButton) llRoot.findViewById(R.id.rbRainbowCircle); String sTag = v.getTag().toString(); if (getString(R.string.rb_fade).compareTo(sTag) == 0) { rbRainbow.setChecked(false); rbRainbowC.setChecked(false); } else if (getString(R.string.rb_rainbow).compareTo(sTag) == 0) { rbF.setChecked(false); rbRainbowC.setChecked(false); } else if (getString(R.string.rb_rainbow_circle).compareTo(sTag) == 0) { rbF.setChecked(false); rbRainbow.setChecked(false); } } /** * On click one audio radiobutton, deselect the rest of the radiobuttons * * @param v */ public void onSelectAudioRadioButton(View v) { LinearLayout llRadioButton = (LinearLayout) v.getParent(); LinearLayout llRoot = (LinearLayout) llRadioButton.getParent(); RadioButton rbB = (RadioButton) llRoot.findViewById(R.id.rbBeep); RadioButton rbM = (RadioButton) llRoot.findViewById(R.id.rbMelody1); String sTag = v.getTag().toString(); if (getString(R.string.rb_beep).compareTo(sTag) == 0) { rbM.setChecked(false); } else if (getString(R.string.rb_melody).compareTo(sTag) == 0) { rbB.setChecked(false); } } /** * On click one color radiobutton, deselect the rest of the radiobuttons * * @param v */ public void onSelectColorRadioButton(View v) { LinearLayout llRadioButton = (LinearLayout) v.getParent(); LinearLayout llRoot = (LinearLayout) llRadioButton.getParent(); RadioButton rbF = (RadioButton) llRoot.findViewById(R.id.rbFullColor); RadioButton rbP = (RadioButton) llRoot.findViewById(R.id.rbPartColor); String sTag = v.getTag().toString(); if (getString(R.string.rb_fully).compareTo(sTag) == 0) { rbP.setChecked(false); } else if (getString(R.string.rb_partly).compareTo(sTag) == 0) { rbF.setChecked(false); } } /** * Click on buton panel jukebox * * @param v */ public void onClickSave(View v) { // Get current command if (getCommnand(v) != null) { ifcc = getCommnand(v); } else { Toast.makeText(this, "This command cannot be assinged", Toast.LENGTH_SHORT).show(); } // Inflate prompt jukebox LayoutInflater li = LayoutInflater.from(this); View promptsView = li.inflate(R.layout.prompt_jukebox, null); Button ba = (Button) promptsView.findViewById(R.id.bPromptA); ba.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_A)) .getmTitle()); Button bb = (Button) promptsView.findViewById(R.id.bPromptB); bb.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_B)) .getmTitle()); Button bc = (Button) promptsView.findViewById(R.id.bPromptC); bc.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_C)) .getmTitle()); Button bd = (Button) promptsView.findViewById(R.id.bPromptD); bd.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_D)) .getmTitle()); Button be = (Button) promptsView.findViewById(R.id.bPromptE); be.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_E)) .getmTitle()); Button bf = (Button) promptsView.findViewById(R.id.bPromptF); bf.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_F)) .getmTitle()); Button bg = (Button) promptsView.findViewById(R.id.bPromptG); bg.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_G)) .getmTitle()); Button bh = (Button) promptsView.findViewById(R.id.bPromptH); bh.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_H)) .getmTitle()); Button bi = (Button) promptsView.findViewById(R.id.bPromptI); bi.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_I)) .getmTitle()); Button bj = (Button) promptsView.findViewById(R.id.bPromptJ); bj.setText(FeedbackCubeConfig.getSingleInstance().getSampler(getString(R.string.jukebox_button_J)) .getmTitle()); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder.setView(promptsView); // TextView tvPrompt = (TextView) promptsView // .findViewById(R.id.textViewPrompt); // tvPrompt.setText("Ip Address: "); // final EditText userInput = (EditText) promptsView // .findViewById(R.id.editTextPrompt); // if (FeedbackCubeConfig.getSingleInstance().getIp() != null) { // userInput.setText(FeedbackCubeConfig.getSingleInstance().getIp()); // } alertDialogBuilder.setCancelable(false).setPositiveButton("Done!", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // FeedbackCubeConfig.getSingleInstance().setIp( // userInput.getText().toString()); dialog.dismiss(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } }