package com.yassirh.digitalocean.ui; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; import android.support.v7.app.ActionBar.LayoutParams; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ListView; import android.widget.TextView; import com.yassirh.digitalocean.R; import com.yassirh.digitalocean.model.Domain; import com.yassirh.digitalocean.model.Record; import com.yassirh.digitalocean.service.DomainService; import com.yassirh.digitalocean.service.RecordService; public class DomainDetailsDialogFragment extends DialogFragment { DomainService domainService; RecordService recordService; public DomainDetailsDialogFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View vi = inflater.inflate(R.layout.dialog_domain_details, container); String domainName = getArguments().getString("domainName"); domainService = new DomainService(getActivity()); recordService = new RecordService(getActivity()); Domain domain = domainService.findByDomainName(domainName); RecordAdapter recordAdapter = new RecordAdapter(getActivity(), domain.getRecords()); getDialog().setTitle(domain.getName()); TextView domainTextView = (TextView)vi.findViewById(R.id.domainTextView); TextView ttlTextView = (TextView)vi.findViewById(R.id.ttlTextView); ListView recordsListView = (ListView)vi.findViewById(R.id.recordsListView); domainTextView.setText(domain.getName()); ttlTextView.setText("ttl : " + domain.getTtl()); recordsListView.setAdapter(recordAdapter); registerForContextMenu(recordsListView); return vi; } private Record record; @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { if (v.getId() == R.id.recordsListView) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; record = new RecordService(getActivity()).findById(info.id); MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.record_context, menu); OnMenuItemClickListener listener = new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { onContextItemSelected(item); return true; } }; for (int i = 0, n = menu.size(); i < n; i++) menu.getItem(i).setOnMenuItemClickListener(listener); } } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_edit_record: Bundle args = new Bundle(); args.putLong("id", record.getId()); args.putString("domain_name", record.getDomain().getName()); FragmentManager fm = getActivity().getSupportFragmentManager(); RecordCreateDialogFragment recordCreateDialogFragment = new RecordCreateDialogFragment(); recordCreateDialogFragment.setArguments(args); recordCreateDialogFragment.show(fm, "create_record"); return true; case R.id.action_destroy: recordService.deleteDomainRecord(record.getDomain().getName(), record.getId(), true); this.dismiss(); return true; } return false; } @Override public void onStart() { super.onStart(); getDialog().getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); } }