package com.annimon.everlastingsummer; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.widget.SeekBar; import android.widget.TextView; /** * Работа с диалогами. * @author aNNiMON */ public final class Dialogs { public static Dialogs with(Context context) { return new Dialogs(context); } private final Context context; private final AlertDialog.Builder builder; private Dialogs(Context context) { this.context = context; builder = new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.Dialog)); } public void showMenu(int itemsId, DialogInterface.OnClickListener listener) { builder.setTitle(R.string.actions); builder.setItems(itemsId, listener); builder.setNegativeButton(android.R.string.cancel, dismissDialog); builder.setCancelable(true); builder.show(); } public void showGameMenu(Menu menu, DialogInterface.OnClickListener listener) { if (menu.getTitle() == null) builder.setTitle(R.string.choose); else builder.setTitle(menu.getTitle()); builder.setItems(menu.getItemsNames(), listener); builder.setCancelable(false); builder.show(); } public void showNavigate() { final View root = LayoutInflater.from(context).inflate(R.layout.navigate, null); final TextView positionIndicator = (TextView) root.findViewById(R.id.position); final SeekBar slider = (SeekBar) root.findViewById(R.id.slider); final TextView text = (TextView) root.findViewById(R.id.text); final Parser parser = Parser.getInstance(); positionIndicator.setText(String.valueOf(parser.getPosition())); slider.setMax(parser.getTokensCount() - 1); slider.setProgress(parser.getPosition()); slider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { positionIndicator.setText(String.valueOf(progress)); if (progress >= parser.getTokensCount()) return; text.setText(parser.getTokens().get(progress).getText()); } } ); builder.setTitle(R.string.navigate); builder.setView(root); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { parser.setPosition(slider.getProgress()); } }); builder.setNegativeButton(android.R.string.cancel, dismissDialog); builder.setCancelable(false); builder.show(); } private final DialogInterface.OnClickListener dismissDialog = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }; }